我已经打开所有的错误报告来清理一些未定义的索引,只是为了让我的应用程序更加整洁。我注意到一个奇怪的现象:未定义索引有多严格?
比方说,我有以下阵列:$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')`会产生一个错误 – 2011-02-07 16:03:19
呵呵,谢谢编辑以前copyedit @Piskvor引起的奇怪结构。 :P – Andrew 2011-02-07 16:03:45