PHP中的参考资料

时间:2012-08-06 12:59:31

标签: php

我知道使用&在函数的参数之前意味着它通过引用传递,并且可以用于输出,但是如果我在另一个上下文中使用它意味着什么呢?

例如:

function foo (&$param) {
    $param = 3;
}

foo (&$a);
echo $a;

我添加了&当调用foo只是为了看看会发生什么,并且它实际上似乎没有改变任何东西,并且在该点之前甚至没有定义$ a。

有人可以解释一下吗?

3 个答案:

答案 0 :(得分:7)

The manual说:

  

注意:函数调用上没有引用符号 - 仅在函数定义上。单独的函数定义足以通过引用正确传递参数。从PHP 5.3.0开始,当您在&中使用foo(&$a);时,系统会收到一条警告,指出“调用时间传递参考”已被弃用。

此外,从5.4.0开始,您实际上会得到一个解析错误。在此之前它会起作用,但自5.3以来它会抱怨。由于有些本机函数实际上需要调用时间传递引用(例如debug_zval_dump()以及call_user_func()call_user_func_array()下方)5.4的这一方面严重降低

答案 1 :(得分:3)

在函数中使用&$param时,它意味着您通过引用传递。但是,您不应该在函数调用中使用它 - 使用当前版本的PHP,这将生成警告。函数调用现在只允许传递变量。函数声明必须指示函数是通过引用还是通过传递来接受参数。

按照文档functionName($variableName);而不是functionName(&$variableName)

传递

使用&$参数调用的函数现在将生成一个警告,该警告可以被抑制,但仍然是一种折旧的调用方式。

答案 2 :(得分:0)

考虑下面的代码,这可能无法解答您的问题,但是了解引用变量的一个很好的示例。

<?
$variable="this is some test";

$refvariable = &$variable;
$nvariable = $variable;
$variable ="This IS ANOTHER VARIABLE STRING";

echo "Referenced Variable=".$refvariable;
echo "<bR>Normal Variable=".$nvariable;

&GT?; 简单来说,$ nvariable以上是正常变量,当它回显时,它最初采用$ variable设置的值。现在考虑引用变量$ refvariable,它取$ variable的最新值。 希望上面的例子可以帮助你理解。