为什么这个程序不能按预期工作?我读了一本PHP5的书,书中写道,下面的程序应该会产生25
;我得到15
。
function numberPlus($number){
$number += 5;
return $number;
}
$oldNumber = 10;
$returnNumber = &numberPlus($oldNumber);
$oldNumber += 10;
echo $returnNumber;
'因为您正在打印该函数返回的数字。这可能就是你想要的:
function numberPlus(&$number){
$number += 5;
}
$oldNumber = 10;
numberPlus($oldNumber);
$oldNumber += 10;
echo $oldNumber; // 25
PHP中的函数可以通过在其名称中添加&
来返回引用:
function &function_name($params)
{
...
}
您还必须使用&
:调用此函数
$var = &function_name(...);
但是,请注意,在函数结束后,引用必须是有效的,否则它将不起作用。如果函数返回对其局部变量之一的引用,则该变量将在函数终止时被销毁,$var
将为null
。
为了工作,此函数必须返回全局变量、同一对象的属性(如果它们是类的方法)或同时也是引用的参数。
在您的情况下,您必须执行以下操作:
function &numberPlus(&$number) // param is reference
{
$number += 5;
return $number;
}
$a = 10; // 10
$b = &numberPlus($a); // $a == $b == 15
$b += 10; // $a == $b == 25