2011-08-05 36 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不會導致錯誤,但是一個空的數組可以。 –