PHP 判断数组键值的方式 , 疑惑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aloyuu

PHP 判断数组键值的方式 , 疑惑

  •  
  •   aloyuu 2019 年 1 月 28 日 1693 次点击
    这是一个创建于 2643 天前的主题,其中的信息可能已经有所发展或是发生改变。

    $aaa 可能未赋值 $aaa['小明'] 可能未赋值

    这个时候,有没有必要 判断$aaa 是否存在???

    这个时候,有没有必要 $aaa['小明'] 是否存在???

    if($aaa & $aaa['小明'] & $aaa['小明'] ===1)

    and

    if($aaa & $aaa['小明'] ===1)

    and

    if($aaa['小明'] === 1)

    12 条回复    2019-01-29 07:22:06 +08:00
    U7Q5tLAex2FI0o0g
        1
    U7Q5tLAex2FI0o0g  
       2019 年 1 月 28 日
    isset($aaa['小明']) && $aaa['小明'] ===1
    wuqingdzx
        2
    wuqingdzx  
       2019 年 1 月 28 日
    接一楼
    isset() 判断一个变量是否存在,如果$aaa 不存在或者$aaa 不是一个数组,那么$aaa['小明']就更不可能存在了,所以返回 false。
    然后这种问题有你发帖子的时间,你就写出代码跑起来了已经得到结果。
    1762628386
        3
    1762628386  
       2019 年 1 月 28 日
    不用的,直接 isset,千万别!empty
    isset($arr['key']){

    }else{

    }
    aloyuu
        4
    aloyuu  
    OP
       2019 年 1 月 28 日
    @wuqingdzx 因为最终目的是判断小明是否存在且等于 1 ,不在乎$aaa 下面是否有其它键名与键值

    因为 小明等于 1,要运行事件 A , 不等于 1 则运行事件 B

    所以我问题的关键是 [我并不关心$aaa 是否存在, 或 小明是否存在] , [ 有没有必要] [isset] [判断它]
    aloyuu
        5
    aloyuu  
    OP
       2019 年 1 月 28 日
    @wuqingdzx 在不关心变量是否赋值的情况下,去判断 小明是否存在,是否有背代码书写常理?
    U7Q5tLAex2FI0o0g
        6
    U7Q5tLAex2FI0o0g  
       2019 年 1 月 28 日
    @aloyuu #5 不判断的话会报 warning

    话说,这发帖的时间你写个 demo 运行试一下不就知道了吗?

    ~ cat a.php
    <?php
    if ($a['key'] === 1) {
    echo '1111';
    }
    ~ php a.php
    PHP Notice: Undefined variable: a in /Users/YONG/a.php on line 2

    Notice: Undefined variable: a in /Users/YONG/a.php on line 2

    ~ cat b.php
    <?php
    $a = [];
    if ($a['key'] === 1) {
    echo '1111';
    }
    ~ php b.php
    PHP Notice: Undefined index: key in /Users/YONG/b.php on line 3

    Notice: Undefined index: key in /Users/YONG/b.php on line 3
    zhuzhibin
        7
    zhuzhibin  
       2019 年 1 月 28 日
    如果你担心这个问题 你可以先 isset 判断该变量是否存在 然后在控制结构进一步判断该变量是什么对象、是否为空、等于什么不就好了吗?
    masker
        8
    masker  
       2019 年 1 月 28 日 via Android
    empty 不好吗
    U7Q5tLAex2FI0o0g
        9
    U7Q5tLAex2FI0o0g  
       2019 年 1 月 28 日
    @masker #8 empty 一般慎用,因为 0/null/‘’(空字符串) 都会被判定为 true

    比如 $a['key'] = 0;
    !empty($a['key']) && $a['key'] === 0 => false
    isset($a['key']) && $a['key'] === 0 => true
    结果是不一样的
    hanzhao
        10
    hanzhao  
       2019 年 1 月 28 日
    if($aaa['小明'] ?? false){

    }

    这么判断是否赋值,不知道有没有问题呀
    aloyuu
        11
    aloyuu  
    OP
       2019 年 1 月 28 日
    @littleylv 你说完我才想起来我屏蔽了 警告 , 尴尬。。。
    xiaotuzi
        12
    xiaotuzi  
       2019 年 1 月 29 日 via iPhone
    array_key_exists 判断 key 是否存在,然后再判断是否有对应的值。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     919 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 756ms UTC 22:35 PVG 06:35 LAX 15:35 JFK 18:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86