Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用++作为返回,为什么会发生这种情况?_Php_Static_Operators - Fatal编程技术网

Php 使用++作为返回,为什么会发生这种情况?

Php 使用++作为返回,为什么会发生这种情况?,php,static,operators,Php,Static,Operators,最近,我按照官方示例对返回引用函数进行了测试 ,但与返回“++$a”时的结果相混淆,从与PHP版本相关的答案来看,它们似乎应该是相同的 php版本 密码 您正在使用对同一变量的引用。所以当你运行bar时,你的$var已经是2了 function &fun(){ static $var = 1; return ++$var; } 这个函数没有什么意义,因为它的返回表达式包含一个值作为操作数。在计算一元前缀运算符++后返回该值 因此,++$var递增一个变量

最近,我按照官方示例对返回引用函数进行了测试 ,但与返回“++$a”时的结果相混淆,从与PHP版本相关的答案来看,它们似乎应该是相同的

php版本 密码 您正在使用对同一变量的引用。所以当你运行bar时,你的$var已经是2了

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;
}