ホームページ >バックエンド開発 >PHPチュートリアル >整数の加算と連結時に PHP が「2」をエコーするのはなぜですか?

整数の加算と連結時に PHP が「2」をエコーするのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-29 23:45:29400ブラウズ

Why Does PHP Echo

PHP の興味深い動作: 合計と連結の難題を解明する

PHP プログラミングの分野では、追加時の複雑な動作に関する最近の議論が行われています。

次のコード スニペットで示されているように、この異常を詳しく調べてみましょう:

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

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

このコードを実行すると、両方のエコーが " を出力することが予想されます。合計: 3"。しかし、驚いたことに、最初のエコーには「2」が表示され、開発者は困惑しました。なぜこのようなことが起こるのでしょうか?

鍵は、PHP の演算子の優先順位と結合性にあります。加算演算子 ( ) と連結演算子 (.) は両方とも同じ優先レベルを共有し、左結合になります。これらの演算子が評価される順序が重要になります。

  1. 最初のエコーでは、連結が最初に実行され、結果は「sum: 1」になります。
  2. この文字列はその後変換されます。数値コンテキストにより整数に変換され、加算が 0 2 に効果的に変換され、「2」が得られます。

ただし、2 番目のエコーでは、かっこによって加算が連結の前に行われることが保証され、次のようになります。目的の結果、「sum: 3」が表示されます。

この興味深い動作は、明示的に文書化されていませんが、実験を行い、PHP における演算子の優先順位と結合性の微妙なニュアンスを理解することで発見できます。

以上が整数の加算と連結時に PHP が「2」をエコーするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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