Php 使用++作为返回,为什么会发生这种情况?
最近,我按照官方示例对返回引用函数进行了测试 ,但与返回“++$a”时的结果相混淆,从与PHP版本相关的答案来看,它们似乎应该是相同的 php版本 密码 您正在使用对同一变量的引用。所以当你运行bar时,你的$var已经是2了Php 使用++作为返回,为什么会发生这种情况?,php,static,operators,Php,Static,Operators,最近,我按照官方示例对返回引用函数进行了测试 ,但与返回“++$a”时的结果相混淆,从与PHP版本相关的答案来看,它们似乎应该是相同的 php版本 密码 您正在使用对同一变量的引用。所以当你运行bar时,你的$var已经是2了 function &fun(){ static $var = 1; return ++$var; } 这个函数没有什么意义,因为它的返回表达式包含一个值作为操作数。在计算一元前缀运算符++后返回该值 因此,++$var递增一个变量
function &fun(){
static $var = 1;
return ++$var;
}
这个函数没有什么意义,因为它的返回表达式包含一个值作为操作数。在计算一元前缀运算符++后返回该值
因此,++$var递增一个变量,然后返回变量的值,而不是对变量本身的引用
简而言之:只能为变量获取引用,从值获取引用没有多大意义。@Fky您链接到了错误的静态。您需要静态变量scope@GordonM哎呀,对不起,我的朋友mistake@Condorcho是的,我看到了这一点,我只是对return++$var//感到困惑,为什么会有不同的结果++$var;return$var$var的作用域在函数内部,可以使用php手册中的任何其他名称替换$var,++$a,将$a递增一,然后返回$a。为什么说它返回变量的值。@RichardLi,因为在php表达式中,它返回值。提交一个bug,以便他们在文档中明确说明,为了避免误解,显然必须对其进行改进。
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
function &fun(){
static $var = 1;
return ++$var;
}