我从php手册
中看到了以下声明以下内容可以通过引用传递:
变量,即foo($ a)
新陈述,即foo(new foobar())
从函数返回的引用,即
这是一个不起作用的例子:
<?php
function foo(&$var)
{
$var++;
}
function bar()
{
$a = 5;
return $a;
}
foo(bar());
我试图理解为什么它不起作用。
bar()按值返回'5',foo()引用,那为什么PHP不允许这种行为?
这是否与手册摘录有关:
不应该通过引用传递其他表达式,因为结果是 未定义。例如,以下通过引用传递的示例 无效
然而,对我来说这没有意义,因为bar()返回一个实际值,而不是未定义。
答案 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上