基本上在处理大型数组的情况下,如果发生错误,将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是否保证在对所有引用进行垃圾回收之前,不会对本地变量进行垃圾回收?或者是那种未定义的行为。
答案 0 :(得分:2)
当引用计数大于0时,PHP将永远不会GC。