通过引用返回增加的变量

时间:2015-10-15 12:27:28

标签: php

我知道这是一个简单的例子,并知道为什么返回21,但不明白为什么它以这种方式工作php:

    function increase(&$a) { 
       return $a++; // now i expect $a = 2, but return FIRST the reference (1), an increase later..? 
    }

    $a = 1; 
    $b = increase($a);

    echo $a.$b;

运营商和byRef的特殊行为?

2 个答案:

答案 0 :(得分:3)

$a最初为1时,函数中的后增量运算符告诉PHP返回1,然后将$a增加到2。 ...所以分配给$b的返回值是1;并且by-reference确保递增的$a是其在全局范围内的新值。

然后,您在$a2$b 1(现在21后增加) >

答案 1 :(得分:3)

$a++是后增量 返回$a的旧值,而不是递增值。

但是如果++$a是预增量,则$a的值会递增,并返回新值。

因此,在这种情况下,如果$a = 1而您$a++,则会返回1,而如果您使用++$a,则会返回2。< / p>