1

null 参照の未定義のインデックスにアクセスする場合、PHP はエラーをスローしません。

<?php

$array = &$foo['bar'];
if ($array['stuff']) echo 'Cool'; // No PHP notice
$array['thing'] = 1; // Array created; $foo['bar']['thing'] == 1
$array['stuff']; // PHP notice

参照でなければ$array、PHP は最初の行で文句を言ったでしょう。

なぜ参考にならないのですか?null 参照の isset を気にする必要がありますか、それとも PHP が内部的に不平を言って、私に知らせていませんか?

4

3 に答える 3

1

あなたのコード$arrayではnullです。次のコードも通知しません。

$b = null;
if ($b['stuff']) echo 'cool';

これは奇妙です。ドキュメントのこのコメントはその事実を示しています。

于 2012-06-13T23:16:39.417 に答える
1

エラー報告レベルを上げる必要があります。あなたの例$array['stuff']は、インデックスが見つからないという警告をスローします。これらの警告を防ぐために、キー入力のテストと評価を組み合わせることがよくあります。

if( array_key_exists("blah",$arr) && strlen($arr['blah']) > 0 ) { 
    ; // do stuff here
}

私は変数を配列名と組み合わせることがよくあります。これは、コピー コードを次のセクションにコピー アンド ペーストして同じことを行う必要があるときはいつでも、変数名の配列を作成してから、変数名を反復処理したいからです。最もばかげた状況は、操作する請求および出荷データがある場合です。ここでは、配列変数名を使用する$BorSか、最初$BSに設定して、次の$BorS="shipping";ような非常に興味深いステートメントになります。

${$BorS."data"}[${$BorS."_addr1"}]=$input_array[$BorS."_address_line_1"];
于 2012-06-13T23:20:10.087 に答える
-2

なぜそうしないのですか:

$array = array();
于 2012-06-13T23:14:46.657 に答える