功能。通过引用传递

时间:2015-01-14 15:47:39

标签: php function pass-by-reference

我从php手册

中看到了以下声明
  

以下内容可以通过引用传递:

     
    

变量,即foo($ a)

         

新陈述,即foo(new foobar())

         

从函数返回的引用,即

  

这是一个不起作用的例子:

<?php
function foo(&$var)
{
    $var++;
}
function bar()
{
    $a = 5;
    return $a;
}
foo(bar());

我试图理解为什么它不起作用。

bar()按值返回'5',foo()引用,那为什么PHP不允许这种行为?

这是否与手册摘录有关:

  

不应该通过引用传递其他表达式,因为结果是   未定义。例如,以下通过引用传递的示例   无效

然而,对我来说这没有意义,因为bar()返回一个实际值,而不是未定义。

2 个答案:

答案 0 :(得分:0)

只应通过引用传递变量,因此这将起作用

function foo(&$var)
{
    $var++;
}
function bar()
{
    $a = 5;
    return $a;
}
$a = bar();
foo($a);
var_dump($a);

答案 1 :(得分:0)

没有错......这是你的例子有点完整。

function foo(&$var)
{
    $var++;
    return $var;
}
function bar()
{
    $a = 5;
    return $a;
}
echo foo($a=bar())."\n";
echo $a . "\n";

输出预期的。 6 五 在PHP 5.6.3上