未定义的索引行为

时间:2011-08-05 15:06:40

标签: php arrays

如果我在PHP中有一个当前为null的数组,那么不应该访问未定义的索引会出现E_NOTICE级错误吗?

如果我有以下代码片段:

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

我希望会出现错误,但它会毫无问题地运行。我已验证我的日志级别设置为E_ALL。有没有我缺少的东西,或者PHP很高兴为未定义的索引返回null,只要你不试图修改数据?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

不,当$ myArray设置为null时,它不会显示任何错误。 如果它是一个空数组或除null之外的任何其他值,则返回E_NOTICE级别错误。 我实际上不知道为什么,但它确实如此。