从参考函数返回(PHP5)

时间:2015-03-26 21:23:42

标签: php pass-by-reference

为什么这个程序没有按预期工作?我读了一本PHP5书,写了下面的程序应该导致25;我得到15

function numberPlus($number){
    $number += 5;
    return $number;
}

$oldNumber = 10;
$returnNumber = &numberPlus($oldNumber);
$oldNumber += 10;
echo $returnNumber;

2 个答案:

答案 0 :(得分:0)

'因为您正在通过该功能打印返回的号码。这可能是你想要的:

function numberPlus(&$number){
    $number += 5;
}

$oldNumber = 10;
numberPlus($oldNumber);
$oldNumber += 10;
echo $oldNumber; // 25

答案 1 :(得分:0)

PHP中的函数可以通过将&添加到其名称中来返回引用:

function &function_name($params)
{
    ...
}

您还必须使用&

调用此函数
$var = &function_name(...);

但是,请注意,在函数结束后引用必须有效,否则它将不起作用。如果函数返回对其局部变量之一的引用,则该函数将在函数终止且$varnull时被销毁。

为了工作,这个函数必须返回全局变量,同一个对象的属性,以防它们是类的方法,或者参数也是引用。

在您的情况下,您必须执行以下操作:

function &numberPlus(&$number) // param is reference
{
    $number += 5;
    return $number;
}

$a = 10; // 10
$b = &numberPlus($a); // $a == $b == 15
$b += 10; // $a == $b == 25