最近我按照官方示例对返回参考函数进行了测试 here,但与返回'++ $ a'时的结果相混淆,似乎它们应该与答案相同What's the difference between ++$i and $i++ in PHP?它似乎与PHP的版本有关。
PHP 5.6.28 (cli) (built: Dec 6 2016 12:38:54)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
function &fun(){
static $var = 1;
return ++$var;
}
function &bar() {
static $var = 1;
++$var;
return $var;
}
$var2 =& fun();
$var3 =& bar();
fun();
bar();
echo 'var2:', $var2; // 2 why is it 2 instead of 3?
echo 'var3:', $var3; // 3
答案 0 :(得分:0)
您正在使用reference
到同一个变量。因此,当您运行bar()
时,$var
已经是2。
答案 1 :(得分:-1)
function &fun(){
static $var = 1;
return ++$var;
}
这个函数没什么意义,因为它的return
表达式包含一个值作为操作数。在评估一元前缀运算符++
之后返回该值。
因此,++$var
递增变量,然后返回变量的值,而不是对变量本身的引用。
简而言之:只能为变量获取引用,从值中引用并没有多大意义。