2013-06-21 119 views
2

我只是在玩PHP,有人可以向我解釋爲什麼下面的代碼打印出5566而不是6666?遞增產生意想不到的結果的字符串

$a = 5; 
$b = $a; 

echo $a++ . $b++; 
echo "\n"; 
echo $a++ . $b++; 

它回聲$ a然後加1到它嗎?爲什麼它不反映結果?

編輯: 的人觀看另一個簡單的例子:

$a = 5; 
$b = $a++; 
echo $a++ . $b; 

主要生產65

+1

使用的預增量運算符 –

+0

5566是預期的產出。 echo $ a ++首先打印$ a,然後遞增該值,而echo ++ $ a將首先增加$ a,然後打印它:) – Fallen

回答

5

應該呼應出

55 
66 

,因爲當你之後(後綴)將++則增量在執行統計後完成。如果你想

66 
66 

然後做

$a = 5; 
$b = $a; 

echo ++$a . ++$b; 
echo "\n"; 
echo $a++ . $b++; 
1

它是那麼首先被使用的價值POST-INCREMENT OPERATOR(即5),然後遞增所以你得到5566

echo $a++ . $b++; // echo 55 and then a becomes 6 , b becomes 6 
echo "\n"; 
echo $a++ . $b++; // echo 66 
1

在你的代碼中,IN首先回顯它返回$a的值,然後它的增量類似於$ b。

這裏是一個$ ++解釋:

++$a Pre-increment Increments $a by one, then returns $a. 
$a++ Post-increment Returns $a, then increments $a by one. 
--$a Pre-decrement Decrements $a by one, then returns $a. 
$a-- Post-decrement Returns $a, then decrements $a by one. 

希望這將有助於你理解。

檢查下面的問題也:

Pre-incrementation vs. post-incrementation
What's the difference between ++$i and $i++ in PHP?

1

因爲$ A ++是後增量其返回值,然後遞增值。

嘗試:

echo ++$a . ++$b; 
echo "\n"; 
echo $a++ . $b++; 

它一樣

$a++; 
$b++; 
echo $a . $b; 
echo "\n"; 
echo $a . $b; 
$a++ 
$b++; 
1

當你做postincrementation首先是返回的值,然後將其加1,這就是爲什麼你會得到這樣的結果。

如果你preincremenation首先值美元的加入則在返回的原因,你會看到66和77

echo ++$a . ++$b; 

將打印66因爲你可能預期。

注意事項預先增加/減少速度比發佈速度快,這就是爲什麼如果你不需要在增加/減少之前先使用它顯示值。

Morover,如果你使用的參考

$a = 5; 
$b = &$a; 

echo $a++ . $b++; 

將輸出56

$a = 5; 
$b = &$a; 

echo ++$a . ++$b; 

將輸出77 :)

相關問題