null
基本的に、大きな配列を操作する場合、エラーが発生した場合に$array = null
戻すと便利$array[] = 1
です。許容値として受け入れます。基本的には、エラー処理コードがあれば簡単にエラーとして識別できるので便利ですが、気にしない場合は簡単に無視することもできます。[ 1 ]
null
function (array $array = null)
null
null
ほとんどの場合、これはかなり簡単ですが、PHP が実際にはそれほどうまくサポートしていないというまれなケースがあります。時々 null を返しますが、それ以外の場合は参照を返します (ほとんどの場合、インスタンス変数への参照を返すため、これは問題ではありませんが、そうでない場合もあります)。null
扱いにくい方法で値を指定して関数を呼び出す場合もあります。
参照を渡す理由は明らかに、配列をコピーする手間を省くためです (特に配列が非常に大きい場合)。
次の「解決策」...
\error_reporting(-1);
function & nil()
{
$nil = null;
return $nil;
}
function & pass(array & $variable = null)
{
return $variable;
}
function & check ()
{
return nil();
}
$test = pass(nil());
$test = &pass(nil());
$test1 = &check();
$test1[] = 1;
$test2 = &check();
$test2[] = 2;
\var_dump($test1, $test2);
動作しますが...
私の質問は、ローカル変数へのすべての参照がガベージ コレクションされる前に、ローカル変数がガベージ コレクションされないことを PHP が保証するかどうかです。またはその未定義の動作です。