2015-10-15 119 views
1

我知道这是简单的例子,并且知道为什么返回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特殊行为?

回答

3

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

但在++$a的情况下,它是预增量,$a的值增加并返回新值。

因此,在这种情况下,如果$a = 1和你做$a++它将返回1,而如果你使用++$a它将返回2

+0

现在我明白了,我想念这个,认为++ $ x和$ x ++它是一样的,但是它的工作返回值1º和后期增加。谢谢! – Zenth

3

$a最初1,在功能上递增运算符告诉PHP要返回1,然后递增$a2 ....所以分配给$b返回值为1;并且by-reference确保递增的$a是其在全局范围内的新值。

然后你串联$a(现2继后的增量)与$b1)给21