php運算子優先順序求解釋

WBOY
發布: 2016-08-04 09:20:23
原創
948 人瀏覽過

看了php運算子優先級, 能看懂手冊上面的例子, 但這個就有點看不懂了

<code>
echo "1+5". 1+5;// 6

echo "1+5". 5+1;// 2

echo "5+1". 5+1;// 6

echo "5+1". 1+5;// 10</code>
登入後複製
登入後複製

回覆內容:

看了php運算子優先級, 能看懂手冊上面的例子, 但這個就有點看不懂了

<code>
echo "1+5". 1+5;// 6

echo "1+5". 5+1;// 2

echo "5+1". 5+1;// 6

echo "5+1". 1+5;// 10</code>
登入後複製
登入後複製

參考php.net的說明。

我的翻譯(比較爛)

點運算子和 +, -具有相同的優先權, 混合運用可以產生意想不到的效果。

<code class="php">$var = 3;

echo "Result: " . $var + 3;
</code>
登入後複製

以上結果輸出3, 而不是期望結果6

因為點運算子和+, -有相同的優先權, 所有上述運算"Result: " . $var + 3;會先計算字串Result和變數$var得到

Resuklt3

再計算

Resuklt3和數字3的結果, 而非空非數字的字串和整數計算時都會轉換為0, 故得起結果為3

同理

echo "5+1". 1+5; 這個也一樣, 先計算"5+1". 1得到一個字串5+11,(注意這是字串), 在和數字5作加法運算, 字串5+11轉換為數字= 5, 再加上5結果為10

很簡答呀,四個例子就說明一個問題,字串連接符

.的優先權比運算子+高。 先普及一下,在PHP中如果進行加法運算的變數不是數字類型的,會先轉換成數字類型,而"1+15"這個字串會轉換成數字1。
那這幾項的結果就很明顯了:

<code>"1+5" . 1 + 5 = "1+15" + 5 = 1 + 5 = 6
"1+5" . 5 + 1 = "1+51" + 1 = 1 + 1 = 2
"5+1" . 5 + 1 = "5+15" + 1 = 5 + 1 = 6
"5+1" . 1 + 5 = "5+11" + 5 = 5 + 5 = 10</code>
登入後複製

php運算子優先順序求解釋

補充下:

字串連接符 . 和算術運算子 +- 的優先權是一樣的,同級。結合方向是左,即由左往右計算。 refer link
所以會先進行字串連接,再進行加運算。

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板