函数传递为“& $ x”输出值而不是错误,请参阅下面的代码

时间:2010-11-19 14:13:41

标签: php pass-by-reference

下面是输出“15”的代码,为什么?

function zz(&$x){

$x = $x + 5;

}

$x = 10;

zz($x);
echo $x;

请解释

6 个答案:

答案 0 :(得分:6)

按设计工作。使用&通过引用传递$x,意味着函数对变量执行的任何操作都将对设置为$x的原始10进行。

如果您使用

function zz($x)

原始$x将保留在10,因为只有变量会传递给该函数。

答案 1 :(得分:3)

你传递的值是因为参数不是变量的直接值,而是传递By引用,所以它给你15作为输出。

谢谢!

答案 2 :(得分:2)

因为函数签名定义传递给函数的值应该通过引用传递。

如果您不知道这意味着什么,我建议您阅读this paragraph on Wikipedia

答案 3 :(得分:1)

添加&表示您通过引用传递$ x变量。外部值在函数内更改,而不是在更改函数中的副本。

答案 4 :(得分:1)

函数内的

$x是对函数外$x的相同值的引用。

当函数接受带有“&”的参数时,它的值不会复制到函数范围内创建的新变量中,而是引用与给定参数相同的值。

请参阅here

答案 5 :(得分:1)

使用& &符号:通过参考传递met函数中的目的。

它只是改变原始变量并将其再次返回到相同的变量名称,并赋予其新值。