ホームページ >バックエンド開発 >PHPチュートリアル >\'sum: \' が行われる理由。 $a $b PHP の出力 2?

\'sum: \' が行われる理由。 $a $b PHP の出力 2?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 01:58:02483ブラウズ

Why Does

PHP の競合する演算子: 加算と連結

PHP では、加算演算と連結演算を組み合わせようとすると、興味深い現象が発生します。例を使用して、この奇妙な動作を調べてみましょう:

<code class="php">$a = 1;
$b = 2;

echo "sum: " . $a + $b;
echo "sum: " . ($a + $b);</code>

おそらく、2 行目は "sum: 3" を出力します。ただし、最初の行には予期せず「sum: 2」ではなく「2」が表示されます。なぜこのようなことが起こるのでしょうか?

同じ優先順位の左結合演算子

鍵は、PHP の演算子の優先順位と結合性にあります。加算演算子 ( ) と連結演算子 (.) は両方とも同じ優先順位を共有します。したがって、それらは左から右に評価されます。

コードの最初の行では、連結 (.) 演算子が最初に来ます:

<code class="php">"sum: " . $a + $b</code>

この結果は $b に追加されます。 。つまり、次のようになります。

<code class="php">echo "sum: 1" + 2;</code>

これは数値コンテキストであるため、「sum: 1」は整数に変換されます。これにより、0 2 が残り、結果は 2 になります。

2 行目に括弧が導入されている場合、加算演算子が優先されます。最初に括弧内の式が評価され、結果は 3 になります。次に、これを「sum:」と連結して、正しい出力「sum: 3」を生成します。

PHP の Operator Quirks の文書化

この独特の動作は、連結演算子と算術演算子に関する PHP ドキュメントに明示的に記載されており、同じ優先順位の演算子を扱う場合の結合性の重要性が強調されています。コード内の潜在的な混乱を避けるために、PHP 開発者はこれらの微妙な違いを認識することが重要です。

以上が\'sum: \' が行われる理由。 $a $b PHP の出力 2?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。