このコードには3つのvar_dumpsがあります(2番目はコメント化されています)。
これを実行すると、最初と3番目のvar_dumpが予期したとおりに通知(両方)を生成します。
2番目のvar_dumpのコメントを外した後、3番目のvar_dumpが通知をスローしなくなります。
私の質問は:なぜですか?
私はまだ3番目のvar_dumpにまだ私は(issetが示すように)設定されていない変数を読み込んでいるので、そこに通知があると思います。未設定の変数を呼び出しても、参照として呼び出した後で通知を送信しません。
<?php
function nvl(&$var, $default = 'hello')
{
return !isset($var) ? $default : $var;
}
var_dump($a, isset($a));
//var_dump(nvl($a), isset($a));
var_dump($a, isset($a));
この行 'var_dump(nvl($ a)、isset($ a));'がコメント化されていない場合、$ aが作成されるので –
関数を呼び出して変数を参照で渡すので、http ://php.net/manual/en/language.references.whatdo.php – Rizier123
いいえ、$ aは作成されません。 $ aが設定されていれば、nvl($ a)の後に尋ねるたびに、答えはノーです。それは良いことです、それはその機能のポイントではないからです。 –