2012-11-07 123 views
1

今天我注意到了php中的一個模糊問題。我跑這個代碼php的奇怪行爲

$i = 5; 
$i = $i ++; 
var_dump($i); //output 5 instead of 6 

讓我們假設初始值爲$i is 5。現在新的值應該是6,但事實上原來是5。當我在C++中做了同樣的事情時,我按預期得到了6。 這是多少年來一直未被注意到的PHP中的一些錯誤,還是它是一些其他的東西。有人可以解釋嗎?

+2

好問題,但看起來像非常容易出錯的代碼,必然會讓人們感到困惑。要增加'$ i',請使用標準約定。選擇'$ i ++'或'$ i + = 1'或'$ i = $ i + 1'(或其他明顯的方法),而不是混合它們。分配後增量操作的結果看起來很奇怪。 – jheddings

+4

不知道PHP,但在C++中,'i = i ++;'是未定義的。你得到的'6'是沒有意義的。 – jrok

+0

它應該像$ i = $ i ++與$ i = $ i相同,然後$ i ++即$ i = 5和$ i ++給出$ i = 6 –

回答

5

爲什麼你認爲值應該是 6?

$i正在增加,之前返回遞增(因爲你正在使用的後增量運算符),並分配給$i價值。似乎合乎邏輯。

3

嘗試

$i = ++$i; 

,你會得到正確的結果。

的問題是,如果你做$i = $i++然後$i是語句後遞增,但你在另一邊將其分配到老,所以它不會繼續增加變量