通过引用从函数返回(PHP5)


Returning from a function by reference (PHP5)

为什么这个程序不能按预期工作?我读了一本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