2015-10-15 125 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