如果我在PHP中有一個當前爲空的數組,不應該訪問未定義的索引提供E_NOTICE級錯誤?未定義的索引行爲
如果我有下面的代碼片段:
$myArray = null;
echo $myArray['foo']['bar'];
我希望一個錯誤,但它運行沒有問題。我已驗證我的日誌級別設置爲E_ALL。有沒有我丟失的東西,或者是PHP開心的返回null爲未定義的索引,只要你不試圖修改數據?
如果我在PHP中有一個當前爲空的數組,不應該訪問未定義的索引提供E_NOTICE級錯誤?未定義的索引行爲
如果我有下面的代碼片段:
$myArray = null;
echo $myArray['foo']['bar'];
我希望一個錯誤,但它運行沒有問題。我已驗證我的日誌級別設置爲E_ALL。有沒有我丟失的東西,或者是PHP開心的返回null爲未定義的索引,只要你不試圖修改數據?
是的,未定義的索引只觸發非空變量(不要問我爲什麼)。這將觸發一個通知:
<?php
error_reporting(E_ALL);
$myArray = array();
echo $myArray['foo']['bar'];
?>
不,它在$ myArray設置爲null時不顯示任何錯誤。 如果它是一個空數組或任何其他值,除了null,那麼它將返回一個E_NOTICE級別的錯誤。 我真的不知道爲什麼,但它是這樣。
剛剛測試過,你說得對。設置爲null不會導致錯誤,但是一個空的數組可以。 –
試圖訪問bugs.php.net至於我,這是奇怪的行爲。 $ myArray的=陣列(); echo $ myArray ['foo'] ['bar'];因爲我認爲得到錯誤 – RiaD
@Dan W:FabioG,是正確的。 – linguini
@RiaD:沒有發現錯誤。 http://www.meandeviation.com/tutorials/learnphp/php-syntax-check/v4/do-syntax-check.php – linguini