2011-08-05 25 views
5

PHPで現在nullの配列がある場合、未定義のインデックスにアクセスするとE_NOTICEレベルのエラーが発生しないはずですか?未定義のインデックス動作

私は次のコードスニペットがある場合:

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

を私はエラーを期待するが、それは問題なく動作します。ログレベルがE_ALLに設定されていることを確認しました。あなたがデータを変更しようとしていない限り、私が紛失しているか、PHPが幸せでない未定義のインデックスを返していますか?

+0

私は、奇妙な動作です。 $ myArray = array();エコー$ myArray ['foo'] ['bar']; – RiaD

+0

@ダンW:FabioG、正しいです。 – linguini

+0

@RiaD:エラーは見つかりませんでした。 http://www.meandeviation.com/tutorials/learnphp/php-syntax-check/v4/do-syntax-check.php – linguini

答えて

3

はい、未定義のインデックスは、null以外の変数に対してのみトリガします(理由はわかりません)。しかし、これは通知をトリガーします:

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

いいえ、$ myArrayがnullに設定されてもエラーは表示されません。 空の配列またはnull以外の値の場合は、E_NOTICEレベルのエラーを返します。 私は実際には理由は分かりませんが、そのままです。

+1

ちょうどテストされ、あなたが正しいです。 nullに設定するとエラーは発生しませんが、空の配列はエラーになります。 –

関連する問題