PHP の難問: 加算と連結の相互作用
PHP 開発者は、加算 ( ) と連結 (.) を組み合わせるときに独特の動作に遭遇する可能性があります。オペレーター。次のコードを考えてみましょう:
<code class="php">$a = 1; $b = 2; echo "sum: " . $a + $b; echo "sum: " . ($a + $b);</code>
このコードを実行すると、次の出力が生成されます:
2 sum: 3
最初のエコーで "sum:" の出力に失敗するのはなぜですか?
演算子の優先順位と結合性
加算演算子と連結演算子の両方の演算子の優先順位は同じです。ただし、これらは左結合であり、左から右に評価されることを意味します。この結果、評価順序は次のようになります。
echo "sum:" . ($a + $b); // Parentheses force addition first echo "sum:" . $a + $b; // Addition performed before concatenation
数値コンテキスト変換
2 行目では、かっこが使用されており、加算が最初に実行されます。ただし、最初の行では連結が優先され、次のようになります。
"sum: 1" + 2
数値コンテキストでは、PHP は文字列 "sum: 1" を整数に変換し、結果は 1 になります。この数値加算により、結果 2.
ドキュメントとその影響
この動作は、PHP マニュアルには明示的に文書化されていません。ただし、1 つのステートメントで複数の演算子を使用する場合は、演算子の優先順位と結合規則を理解することが重要です。これを怠ると、この例で示すように、予期しない結果が生じる可能性があります。
したがって、特に異なる種類の演算子を組み合わせる場合は、明示的に括弧を使用して演算の順序を強制することをお勧めします。
以上がこの場合、PHP の連結が加算よりも優先されるように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。