V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xxbutoo
V2EX  ›  PHP

想问下, PHP 的项目中,有没有这样写过代码的?

  •  
  •   xxbutoo · 2020-11-06 18:40:02 +08:00 · 5046 次点击
    这是一个创建于 1507 天前的主题,其中的信息可能已经有所发展或是发生改变。

    $a = ['name'=>'zhangsan','age'=>18];

    if (count($a) == 0) {
    echo "array is empty";
    } else foreach($a as $k => $v) {
    echo $v;
    }

    43 条回复    2020-11-10 15:12:49 +08:00
    sheeta
        1
    sheeta  
       2020-11-06 18:41:32 +08:00 via Android
    没有
    vibbow
        2
    vibbow  
       2020-11-06 18:43:28 +08:00
    是很常用的用法。不过这个 if 是多余的。
    xxbutoo
        3
    xxbutoo  
    OP
       2020-11-06 18:45:19 +08:00
    @vibbow 不写 if 怎么凸显 else 后面的 statement (大笑大笑笑大)
    vibbow
        4
    vibbow  
       2020-11-06 18:46:28 +08:00
    @xxbutoo foreach 遇到空数组是不会报错的。
    xiaoao4568
        5
    xiaoao4568  
       2020-11-06 18:51:52 +08:00 via Android
    这也太不规范了吧
    taxiaohaohhh
        6
    taxiaohaohhh  
       2020-11-06 18:58:01 +08:00 via Android
    太骚了。写不出来
    sadfQED2
        7
    sadfQED2  
       2020-11-06 19:01:15 +08:00 via Android
    这不基本操作吗?
    DoodleSit
        8
    DoodleSit  
       2020-11-06 19:05:24 +08:00   ❤️ 1
    单条语句可以省略花括号~
    Mitt
        9
    Mitt  
       2020-11-06 19:10:15 +08:00
    我觉得花括号这东西能不省就不省,有时候串行都不会发现,要省就要省 else,减少缩进才是真
    gakkiismywife1
        10
    gakkiismywife1  
       2020-11-06 19:16:49 +08:00
    这样是可以的 我记得鸟哥的博客说过这个写法
    xxbutoo
        11
    xxbutoo  
    OP
       2020-11-06 19:27:07 +08:00
    @gakkiismywife1 哎呀 别拆穿我嘛
    dobelee
        12
    dobelee  
       2020-11-06 19:31:00 +08:00 via iPhone
    没什么特别。就是格式不太规范。而已。
    ben1024
        13
    ben1024  
       2020-11-06 19:44:11 +08:00
    else foreach 不换行厉害的
    为了省字符而省字符
    rocky114
        14
    rocky114  
       2020-11-06 20:15:07 +08:00
    这样写的打死
    asdf2020
        15
    asdf2020  
       2020-11-06 20:18:39 +08:00
    没有,这样真容易被打
    VANHOR
        16
    VANHOR  
       2020-11-06 20:42:20 +08:00
    没这么写过,不过居然还能这么写?
    goodboy95
        17
    goodboy95  
       2020-11-06 21:10:09 +08:00
    if else for,我以前经常想这么写,不过考虑到小命还是没敢
    lepig
        18
    lepig  
       2020-11-06 23:33:06 +08:00
    不好意思,从没写过。

    如果我的同事这样写,我可能会稍微怼他一下。
    svipchao
        19
    svipchao  
       2020-11-07 00:05:05 +08:00   ❤️ 2
    https://www.laruence.com/2020/07/09/6015.html
    今天刚看到的,然后在 v2 又看到了
    akira
        20
    akira  
       2020-11-07 00:53:55 +08:00
    看起来也没啥问题,不过很少这样写
    RickyC
        21
    RickyC  
       2020-11-07 01:43:13 +08:00
    if ($a)
    foreach ($a as $v)
    echo $v;
    else
    echo "array is empty";
    ------
    如果是我可能会这么写, 欢迎指正.
    RickyC
        22
    RickyC  
       2020-11-07 01:44:59 +08:00
    @ben1024 能省必省是原则; 但必要的注释不能省; 能说 1 个字不说 2 个字
    HackerJax
        23
    HackerJax  
       2020-11-07 08:35:56 +08:00 via iPhone
    直接 foreach 就完事了,只要是数组就行
    cszchen
        24
    cszchen  
       2020-11-07 08:57:33 +08:00
    第一次知道这种写法,不推荐,可以辞退了
    C603H6r18Q1mSP9N
        25
    C603H6r18Q1mSP9N  
       2020-11-07 09:31:29 +08:00
    开掉,太骚了
    RickyC
        26
    RickyC  
       2020-11-07 09:37:14 +08:00
    @cszchen 为什么不推荐, 如果这样写性能更好呢?
    newtype0092
        27
    newtype0092  
       2020-11-07 10:22:14 +08:00
    @RickyC 这种完全是陋习,与性能无关。除非是机器自动生成,人工写这种代码极大的提高了维护时的出错概率,纯属给自己和同事找麻烦。
    sorshion
        28
    sorshion  
       2020-11-07 10:22:18 +08:00
    第二次听说这种语法,还是鸟哥,博客介绍的
    cszchen
        29
    cszchen  
       2020-11-07 10:58:59 +08:00   ❤️ 1
    @RickyC 用的还是 if else + foreach 循环,怎么会性能更好
    退一万步讲,就算性能更好,这么不规范也是得不偿失
    用 PHP 来开发,是因为性能不是瓶颈
    fengh0409
        30
    fengh0409  
       2020-11-07 13:45:40 +08:00
    不需要判断,直接 foreach 完事
    maigebaoer
        31
    maigebaoer  
       2020-11-07 13:48:26 +08:00 via Android
    鸟哥博客有见过
    hexiaolu
        32
    hexiaolu  
       2020-11-07 14:18:12 +08:00   ❤️ 1
    是有这样的写法,只是不会这样写,不过 100 个 phper 100 种规范,写代码开心就好!!!
    ditel
        33
    ditel  
       2020-11-07 14:58:05 +08:00 via Android
    自动生成没问题,写的就拖出去吧
    elintwenty
        34
    elintwenty  
       2020-11-07 15:09:15 +08:00
    动态语言 + 奇技淫巧 + 望文生义 维护复杂度指数级增加,在工程里这么写的人已经都被打死了
    lovecy
        35
    lovecy  
       2020-11-07 15:20:13 +08:00
    if (!empty($a)) {
    ....foreach($a as $k => $v) {
    ........echo $v;
    ....}
    } else {
    ....echo "array is empty";
    }
    注:....代表缩进

    这么写是最完美的,懂得都懂!
    好吧,其实就是防止$a 为 undefined 或者 null,报 NOTICE 或 WARNING 错误
    lovecy
        36
    lovecy  
       2020-11-07 15:23:12 +08:00
    @RickyC 没有性能提升可言,而且后期维护的时候,一旦没注意到这里没有花括号,直接后面加了代码,就出错了。
    代码可维护性比省那几个字符重要多了。。
    dvaknheo
        37
    dvaknheo  
       2020-11-07 19:50:07 +08:00
    我会这么写:
    $a=is_array($a)?$a:[];
    foreach($a as $k => $v) {
    //
    }
    好处是少一层缩进,看起来舒服。
    xxbutoo
        38
    xxbutoo  
    OP
       2020-11-07 21:38:40 +08:00
    @elintwenty 为什么啊为什么啊为什么啊
    weitch
        39
    weitch  
       2020-11-08 12:22:37 +08:00 via Android
    @lovecy #35
    php 都是直接 foreach,根本不需要判断是否定义了没,写起来倍儿爽。
    每次看到 js 的各种 undefined 就头疼。
    wdring
        40
    wdring  
       2020-11-08 17:22:02 +08:00
    @weitch 空数组会报错
    lovecy
        41
    lovecy  
       2020-11-09 11:22:08 +08:00
    @weitch 好的习惯是,使用变量前尽量判断(存在、值、类型),然后初始化一下,不然会有很多 NOTICE 或者 WARNING 报错,甚至可能因为其他地方改动,传输了奇怪的数据产生奇怪的 BUG
    weitch
        42
    weitch  
       2020-11-09 13:29:15 +08:00
    @wdring #40
    @lovecy #50
    只要不报 error 就行了
    ben1024
        43
    ben1024  
       2020-11-10 15:12:49 +08:00
    @RickyC
    能省必省这个不赞同,注释可以不写,过于炫技不行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3662 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:30 · PVG 12:30 · LAX 20:30 · JFK 23:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.