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 の出力が得られます。
2 番目の echo ステートメントでは、かっこによって加算演算子が最初に評価されるように強制されます。
($a + $b) . "sum:"
結果は文字列 "sum:" と連結され、目的の出力 "sum: 3" が生成されます。 ".
この動作は、演算子の優先順位に関する PHP のドキュメントに記載されています。 「同じ優先順位を持つ演算子は左から右に評価されます。つまり、 first 、 then .、 then -.」
以上がPHP の連結と加算が予期しない結果を引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。