2016-04-24 26 views
-1

誰能告訴我,爲什麼下面的表達式的結果:PHP結果

$temp=3+"60%"+"$20" 

是63

什麼標誌「$」和「%」,在PHP編程語言是什麼意思?

+0

它們只是字符串中的字符,沒有特殊含義的....你的數學正試圖與一些特殊的含義 –

+3

弱類型意味着PHP將嘗試將字符串轉換爲數字運算使用(給他們灌輸你的'+ '),從左到右工作直到遇到非數字字符;所以它可以將''60%''轉換爲'60',但不能將''20「'轉換爲任何東西,所以它將它視爲0;所以3 + 60 + 0 = 63 –

+0

它是有道理的。您可以將您的評論發佈爲解決方案嗎?謝謝 – ruud

回答

1

首先,請注意您正在執行數字的添加(而不是字符串連接)。

由於這個原因,解釋器試圖在執行總和之前將字符串轉換爲數字。

解析字符串時,遇到數字時會生成結果數字。當遇到非數字時,轉換結束**。

​​轉換爲60%沒有意義,簡單地被丟棄。

"$20"轉換爲0,因爲遇到$符號字符串到int轉換被中止。

所以,你必須60+3

雙引號字符串內的美元符號實際上有特殊的含義,如果後面是變量名:變量的內容放置到字符串,以便:

$a = "20"; 
$b = "10" + "$a"; // --> 30 

(**)有一些例外:"10E3"被轉換爲10E3 = 1000;

"10.2"在轉換到10.2。整個操作變成浮點數的總和。