5

これは奇妙な出力を与える単純なphpプログラムです。なぜこのようになるのか、期待される出力を得る方法を誰かが説明できますか?

<?php
$a=2;$b=3;

echo "<br> ADD:".$a+$b;
echo "<br> SUB:".$a-$b;
echo "<br> MUL:".$a*$b;
echo "<br> DIV:".$a/$b;
?>

出力:

3-3
MUL:6
DIV:0.66666666666667

期待される出力:

ADD:5
SUB:-1
MUL:6
DIV:0.66666666666667
4

1 に答える 1

12

これは、文字列連結演算子がadd / sub演算子と同じ優先順位.を持ち、それらすべてが左結合であるためです。これは、評価が左から右に進むことを意味するため、最初に評価され、結果がに追加されます。この特定の文字列はゼロに変換され、0 + 3=3になります。減算についても同様です。"<br> ADD:".$a3

解決策:算術演算を括弧で囲みます。

echo "<br> ADD:".($a+$b);
echo "<br> SUB:".($a-$b);

一方、mul / divは連結よりも優先順位が高いため、期待どおりの結果が得られます。

于 2012-04-04T16:37:21.263 に答える