banxi1988
V2EX  ›  PHP

下面两种代码写法,你喜欢哪一种?为什么?

  •  
  •   banxi1988 · Jan 26, 2016 · 5235 views
    This topic created in 3944 days ago, the information mentioned may be changed or developed.

    第一段:

    $cate = array();
            $cate[0]['id']=1;$cate[0]['name']='种类 1';
            $cate[1]['id']=2;$cate[1]['name']='种类 2';
            $cate[2]['id']=3;$cate[2]['name']='种类 3';
            $cate[3]['id']=4;$cate[3]['name']='种类 4';
            $cate[4]['id']=5;$cate[4]['name']='种类 5';
    

    第二段:

    $cate_list = ['种类 1','种类 2',' 种类 3','种类 4','种类 5'];
    $cate = [];
    foreach($cate_list as $index => $value){
        $cate[] = ['id'=>$index + 1,'name'=>$value];
    }
    
    ``
    
    25 replies  •  2016-01-31 18:53:24 +08:00
    cxbig
    cxbig
    Jan 26, 2016
    1
    除非是初始化数据库代码,不然哪种都看着不舒服。
    xifangczy
    xifangczy
    Jan 26, 2016❤️1
    2
    $cate = array
    (
    array('id'=>1,'name'=>'种类 1'),
    array('id'=>2,'name'=>'种类 2')
    );
    ayouwei
    ayouwei
    Jan 26, 2016
    3
    2. 对种类增加,删除,插入,调序没 1 那么疼。
    yadam
    yadam
    Jan 26, 2016❤️1
    4
    $cate_list = ['种类 1','种类 2',' 种类 3','种类 4','种类 5'];
    $cate = array_combine(range(1, count($cate_list)), $cate_list);
    pynix
    pynix
    Jan 26, 2016
    5
    相比之下 2 更优雅。。。
    msg7086
    msg7086
    Jan 26, 2016
    6
    如果 cate 非空的话,我会考虑用 array-merge 。否则直接构建数组立即量即可。
    zfj1441
    zfj1441
    Jan 27, 2016 via Android
    7
    个人觉得第一种,代码工整直观。
    gdtv
    gdtv
    Jan 27, 2016
    8
    如果有规律并且数量比较大的,就第 2 种,否则就第 1 种
    jsjscool
    jsjscool
    Jan 27, 2016
    9
    array_push(); 这么好的函数你不用
    Asimov
    Asimov
    Jan 27, 2016 via Android
    10
    我喜欢第一种,一眼望去就知道是干嘛的。
    aivier
    aivier
    Jan 27, 2016
    11
    除非客户捉弄我,不然就写第二种
    banxi1988
    banxi1988
    OP
    Jan 27, 2016
    12
    @jsjscool `$cate[] = XX;` 这种写法一般优于 `array_push`
    banxi1988
    banxi1988
    OP
    Jan 27, 2016
    13
    @yadam 哈哈,让我知道了 array_combine 这个 函数.
    不过您的这个代码并不能达到想要的效果.
    你的代码输出结果:

    ```php
    (
    [1] => 种类 1
    [2] => 种类 2
    [3] => 种类 3
    [4] => 种类 4
    [5] => 种类 5
    )
    ```
    我需要的结果:

    ```php
    (
    [0] => Array
    (
    [id] => 1
    [name] => 种类 1
    )

    [1] => Array
    (
    [id] => 2
    [name] => 种类 2
    )

    [2] => Array
    (
    [id] => 3
    [name] => 种类 3
    )

    [3] => Array
    (
    [id] => 4
    [name] => 种类 4
    )

    [4] => Array
    (
    [id] => 5
    [name] => 种类 5
    )

    )
    ```
    anyforever
    anyforever
    Jan 27, 2016
    14
    得看你数据来源,如果数据是死的,@xifangczy +1
    louk78
    louk78
    Jan 27, 2016
    15
    第二张看起来优雅点
    changlers
    changlers
    Jan 27, 2016
    16
    对于固定的数据而言,没啥区别吧,一开始一直用第二种,后来用第一种了
    chuhemiao
    chuhemiao
    Jan 27, 2016
    17
    2 看起来简洁
    techmoe
    techmoe
    Jan 27, 2016 via Android
    18
    array 套两层套进去就好了嘛

    这是我在这里的第一帖。。大家好我是新人,很高兴认识大家
    penjianfeng
    penjianfeng
    Jan 27, 2016
    19
    肯定第二段,当然,什么写法不重要,都遵守同样的规则就行了
    libook
    libook
    Jan 27, 2016
    20
    let cate_list = [
    {"id": 1, "name": "种类 1"},
    {"id": 2, "name": "种类 2"},
    {"id": 3, "name": "种类 3"},
    {"id": 4, "name": "种类 4"},
    {"id": 5, "name": "种类 5"}
    ]

    好吧,我是 JS 党混进来了~哈哈~可以无视我
    timsims
    timsims
    Jan 28, 2016
    21
    如果是要在 View 里输出的话无论哪一种都不好
    jsjscool
    jsjscool
    Jan 28, 2016
    22
    @banxi1988 `$cate[] = XX;` 这种写法非常不规范,而且你自己也能感觉到这种语法有坏的味道。
    yao978318542
    yao978318542
    Jan 28, 2016
    23
    banxi1988
    banxi1988
    OP
    Jan 30, 2016
    24
    @jsjscool
    我看 PHP 的文档 是这样写的:
    > Note: If you use array_push() to add one element to the array it's better to use $array[] = because in that way there is no overhead of calling a function.
    jsjscool
    jsjscool
    Jan 31, 2016
    25
    @banxi1988 函数调用肯定会有额外的开销。这就像使用 ORM , ORM 与原生的 SQL 相比效率相差不止一点,但是引入 ORM 对项目的管理,规范方面带来的好处远远多余那点执行效率。看你个人,你觉得用哪种更『美』就用哪种。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1018 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 22:54 · PVG 06:54 · LAX 14:54 · JFK 17:54
    ♥ Do have faith in what you're doing.