首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
V2EX  ›  问与答

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

  •  
  •   aloyuu · 314 天前 · 724 次点击
    这是一个创建于 314 天前的主题,其中的信息可能已经有所发展或是发生改变。

    $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
        1
    littleylv   314 天前
    isset($aaa['小明']) && $aaa['小明'] ===1
        2
    wuqingdzx   314 天前
    接一楼
    isset() 判断一个变量是否存在,如果$aaa 不存在或者$aaa 不是一个数组,那么$aaa['小明']就更不可能存在了,所以返回 false。
    然后这种问题有你发帖子的时间,你就写出代码跑起来了已经得到结果。
        3
    1762628386   314 天前
    不用的,直接 isset,千万别!empty
    isset($arr['key']){

    }else{

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

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

    所以我问题的关键是 [我并不关心$aaa 是否存在, 或 小明是否存在] , [ 有没有必要] [isset] [判断它]
        5
    aloyuu   314 天前
    @wuqingdzx 在不关心变量是否赋值的情况下,去判断 小明是否存在,是否有背代码书写常理?
        6
    littleylv   314 天前
    @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
        7
    zhuzhibin   314 天前
    如果你担心这个问题 你可以先 isset 判断该变量是否存在 然后在控制结构进一步判断该变量是什么对象、是否为空、等于什么不就好了吗?
        8
    masker   314 天前 via Android
    empty 不好吗
        9
    littleylv   314 天前
    @masker #8 empty 一般慎用,因为 0/null/‘’(空字符串) 都会被判定为 true

    比如
    $a['key'] = 0;
    !empty($a['key']) && $a['key'] === 0 => false
    isset($a['key']) && $a['key'] === 0 => true
    结果是不一样的
        10
    hanzhao   314 天前
    if($aaa['小明'] ?? false){

    }

    这么判断是否赋值,不知道有没有问题呀
        11
    aloyuu   314 天前
    @littleylv 你说完我才想起来我屏蔽了 警告 , 尴尬。。。
        12
    xiaotuzi   314 天前 via iPhone
    array_key_exists 判断 key 是否存在,然后再判断是否有对应的值。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3314 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 28ms · UTC 04:47 · PVG 12:47 · LAX 20:47 · JFK 23:47
    ♥ Do have faith in what you're doing.