【发布时间】:2011-06-22 20:15:07
【问题描述】:
我已打开所有错误报告以清理一些未定义的索引,只是为了使我正在制作的应用程序更整洁。我注意到一个奇怪的行为:
假设我有以下数组:$a = array('test' => false, 'foo' => 'bar')
如果我这样做if ($a['nothere']),我会正确地收到Undefined index: nothere 的通知。
但是,如果我发送if ($a['test']['nothere']),我不会收到通知。完全没有。尽管nothere 绝对不是$a['test'] 中的索引。
现在,如果我执行$a['test'] = array('baz' => 'poof'),那么运行if ($a['test']['nothere'])确实会抛出一个通知。
未定义索引检查不检查空数组中的索引吗?这是在 PHP 5.2.8 上。
【问题讨论】:
-
这很可能是因为 [] 字符串访问语法和类型杂耍。
$a = array('test' => array(), 'foo' => 'bar')会给你一个错误 -
哈哈,感谢您编辑了由先前的 copyedit @Piskvor 引起的奇怪结构。 :P
-
啊,所以你的意思是,当它执行
if($a['test']['nothere'])时,它会到达if($a['test']),看到解析为false,然后短路?
标签: php multidimensional-array undefined-index