2011-08-05 42 views
5

如果我在PHP中有一个当前为空的数组,不应该访问未定义的索引提供E_NOTICE级错误?未定义的索引行为

如果我有下面的代码片段:

$myArray = null; 
echo $myArray['foo']['bar']; 

我希望一个错误,但它运行没有问题。我已验证我的日志级别设置为E_ALL。有没有我丢失的东西,或者是PHP开心的返回null为未定义的索引,只要你不试图修改数据?

+0

试图访问bugs.php.net至于我,这是奇怪的行为。 $ myArray的=阵列(); echo $ myArray ['foo'] ['bar'];因为我认为得到错误 – RiaD

+0

@Dan W:FabioG,是正确的。 – linguini

+0

@RiaD:没有发现错误。 http://www.meandeviation.com/tutorials/learnphp/php-syntax-check/v4/do-syntax-check.php – linguini

回答

3

是的,未定义的索引只触发非空变量(不要问我为什么)。这将触发一个通知:

<?php 
    error_reporting(E_ALL); 
    $myArray = array(); 
    echo $myArray['foo']['bar']; 
?> 
2

不,它在$ myArray设置为null时不显示任何错误。 如果它是一个空数组或任何其他值,除了null,那么它将返回一个E_NOTICE级别的错误。 我真的不知道为什么,但它是这样。

+1

刚刚测试过,你说得对。设置为null不会导致错误,但是一个空的数组可以。 –