2016-02-02 7 views
5

私は奇妙なことに遭遇したときに小さなプログラムを書いていました。 PHPがエコーステートメントを使って加算または減算の算術演算を行い、括弧またはhtmlページを追加しなければならない操作の結果が操作を提示するのではなく、結果だけを提示したい場合。連結時に+演算にかっこを追加する必要があるのはなぜですか?

以下は縮小例です。

(括弧なし)最初のケース:

$a = 10; 
$b = 5; 
echo "$a + $b = ".$a + $b."<br>"; // 15 
echo "$a - $b = ".$a - $b."<br>"; // 5 
echo "$a * $b = ".$a * $b."<br>"; // 10 * 5 = 50 
echo "$a/$b = ".$a/$b."<br>"; // 10/5 = 2 
echo "$a % $b = ".$a % $b."<br>"; // 10 % 5 = 0 

(括弧付き)は、第2のケース:なぜこれが起こっている

$a = 10; 
$b = 5; 
echo "$a + $b = ".($a + $b)."<br>"; // 10 + 5 = 15 
echo "$a - $b = ".($a - $b)."<br>"; // 10 - 5 = 5 
echo "$a * $b = ".($a * $b)."<br>"; // 10 * 5 = 50 
echo "$a/$b = ".($a/$b)."<br>"; // 10/5 = 2 
echo "$a % $b = ".($a % $b)."<br>"; // 10 % 5 = 0 

は誰が説明してもらえますか?

+3

とそのためノー数学的な操作://www.php。 –

+1

@ MarkBaker申し訳ありませんが、演算子の優先順位は確かにここで役割を果たしますが、OPが記述出力を取得する理由は不明です。私は同じ結果を確認した。あなたは明らかに何が起こっているのか分かっているので、あなたのコメントを精緻化してもよろしいですか?ありがとう! – arkascha

+0

特に 'echo'の使用に関するヒントです。連結しないでください!代わりに '、'を使用してください。例えば。 'echo $ a + $ b ="、$ a + $ b、 "
"; 'あなたはこれらの問題に再び遭遇することはありません。 – Yoshi

答えて

4

linkからマーク・ベイカーによって、あなたは

加算、減算、および文字列の連結は、同じ優先順位を持っていることを見ることができます! echo "$a + $b = ".$a + $b."<br>"; //15

連結し、最初の文字列リテラルと$aの値は、暗黙のうち数(10)にそれを変換するので、あなたはそれに$bを追加することができ、最終的な文字列リテラルを連結します。あなたは括弧に入れたときに、ほかの数(15)として扱われ

二つの言葉、[ "__Operator Precedence__"](HTTPでは文字列

+0

感謝します:) – Tim8288

+0

OPの質問に対する答えは: "文字列から数値への暗黙的な型変換は' + '演算子。 – arkascha

+0

"10 + 5 = 10"を数値演算に変換するにはどうすればよいでしょうか? – arkascha

関連する問題