I次のコードスニペットがあります最初の呼び出しでE_NOTICEエラーが発生しないのはなぜですか?
error_reporting(E_ALL | E_STRICT);
function &getVal() {
$data = [];
return $data['hey'];
//return $whatever;
}
function getVal2() {
$data = [];
return $data['hey'];
}
var_dump(getVal()); // No E_NOTICE error is issued - why?
var_dump(getVal2()); // E_NOTICE error is issued.
をし、問題がある:最初の呼び出しにはE_NOTICE
エラーがないのはなぜ?説明は、参照を返すために変数$data['hey']
が作成されている可能性が最も高いです。ただし、$data['hey']
(または$whatever
,...
)が定義されていない場合、E_NOTICEエラーを発行しないようにするのは間違いです。
あなた自身で質問に答えました。 "間違っているように" ...これはPHPですよね? – Jon
まあ、あなたは絶対に正しいです。問題は、それを参照するという単なる動作によってインスタンス化されたことです。これはおそらく 'preg_match( '..'、 '..'、$ match);を呼び出すように、参照がどのようにしてフードの中で扱われるかと関係しています;'もちろん '$ match'については不平を言いませんまだ、ポイントはそれを埋めるように。 _returnを参照してください。「この場所で_and_request_ dataにアクセスしてください。」と表示されます。スコープの終了時に戻り値の直後に変数を破棄すると、ポイントの横に表示されます。私はそれがとてもかわいいと言っているわけではないが、それはどのようなものなのか。 – Wrikken