揭開PHP 的歧義:串聯和加法的奇怪案例
當加法和串聯時,PHP 的運算子級優先和關聯性可能會導致意外結果運營商參與其中。考慮這段程式碼:
<code class="php">$a = 1; $b = 2; echo "sum: " . $a + $b; // Output: 2 echo "sum: " . ($a + $b); // Output: sum: 3</code>
為什麼會出現差異?這一切都取決於 PHP 的運算子求值順序。
加法 ( ) 和連接 (.) 運算子具有相同的優先權,但它們是左關聯的。這意味著,當 PHP 遇到涉及多個具有相同優先權的運算子的表達式時,它會先計算最左邊的運算符,然後向右計算。
在第一個echo 語句中,連接運算子(.) 先計算,結果如下:
"sum: 1" + 2
然後將字串「sum: 1」轉換為數值(0)並加到$b (2),產生輸出2。
在第二個echo 語句中,括號強制加法運算子首先計算:
($a + $b) . "sum:"
然後將結果與字串「sum:」連接,產生所需的輸出「sum : 3” ".
此行為記錄在有關運算符優先級的PHP 文件中。 ”
以上是為什麼 PHP 的串連和加法會導致意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!