4

次のコード行を検討してください。

<?php
$x = 10;
$y = 7;

echo '10 - 7 = '.$x-$y;
?>

その出力は 3 で、これは計算 $x-$y の予想される結果です。ただし、予想される出力は次のとおりです。

10 - 7 = 3

したがって、私の質問は、計算で連結している文字列に何が起こったのでしょうか? 期待した結果を生成するには、算術演算を括弧で囲む必要があることを知っています。

<?php
$x = 10;
$y = 7;

echo '10 - 7 = '.($x-$y);
?>

出力

10 - 7 = 3

しかし、PHP は元のコードについて文句を言わないので、その場合に生成された出力の背後にあるロジックは何なのか疑問に思っています。弦はどこへ行った?誰かがそれを説明したり、それが説明されている PHP マニュアルの場所を教えてくれたりしたら、私は感謝します。

4

3 に答える 3

4

このコードでは:

echo '10 - 7 = '.$x-$y;

連結が優先されるため、残っているのは次のとおりです。

echo '10 - 7 = 10'-$y;

これは文字列で整数減算を実行しようとしているため、最初に文字列が整数に変換されるため、次のようになります。

echo (int)'10 - 7 = 10'-$y;

その文字列の整数値は である10ため、結果の演算は次のようになります。

echo 10-$y;

であり$y、であるため、エコーされる結果は です。710 - 7 = 33

于 2011-09-27T19:34:21.857 に答える
4

あなたの文字列'10 - 7 = 'は と連結されてい$xます。int次に、これは と解釈され、107減算され、 が得られ3ます。

詳細については、これを試してください:

echo (int) ('10 - 7 = ' . 10); // Prints "10"

文字列から数値への変換の詳細については、http://www.php.net/manual/en/language.types.string.php#language.types.string.conversionを参照してください。

文字列が有効な数値データで始まる場合、これが使用される値になります

于 2011-09-27T19:30:53.083 に答える
2

.-同じ優先順位を持つため、PHP は'10 - 7 = 10'数値として再解釈し、 を与え10、7 を引くと が得られ3ます。

于 2011-09-27T19:30:53.397 に答える