2012-04-04 88 views
5

這是一個簡單的PHP程序,它給出了一個奇怪的輸出。任何人都可以解釋爲什麼它會像這樣以及如何獲得預期的輸出?在PHP中簡單的算術

<?php 
$a=2;$b=3; 

echo "<br> ADD:".$a+$b; 
echo "<br> SUB:".$a-$b; 
echo "<br> MUL:".$a*$b; 
echo "<br> DIV:".$a/$b; 
?> 

輸出:

3-3 
MUL:6 
DIV:0.66666666666667 

預期輸出:

ADD:5 
SUB:-1 
MUL:6 
DIV:0.66666666666667 

回答

12

這是因爲字符串連接運算符.same precedence的加/減運算符,和所有的人都離開了-associative。這意味着評估從左到右進行,因此首先對"<br> ADD:".$a進行評估,並將結果添加到3。這個特定的字符串轉換爲零,0 + 3 = 3.類似的減法。

解決方案:將算術放在括號內。

echo "<br> ADD:".($a+$b); 
echo "<br> SUB:".($a-$b); 

在另一方面,MUL/DIV比級聯更高的優先級,使他們產生預期的結果。

+0

偉大的答案喬恩!謝謝。 – Stranger 2012-04-04 17:08:39