1

($a > $b)以下のコードでは何も表示されない比較操作の結果を表示しようとしていますが、操作($a < $b)は結果を表示します1

なぜ最初の操作がそのまま返っ0てこないのか不思議falseです。

<?php
    $a = 1;
    $b = 5;
    print ($a > $b);
    echo "Output";
    print ($a < $b);
?>
4

3 に答える 3

3

残念ながら、それは非常に一般的な誤解です。0「ではない」falsefalsefalseブール値です。00、数字です。タイプセーフでない比較では0大まかに等しい。false

echoまたはの場合print false、文字列にキャストされています。false文字列へのキャストは""空文字列です。true文字列へのキャストは"1"、文字列 "1" です。

http://php.net/manual/en/language.types.string.php#language.types.string.castingを読んでください。

于 2013-04-12T01:11:48.830 に答える
0

これは、PHP が false 値を処理する方法が原因です。

echo ($a > $b)また、何も出力しません。

false 条件に対してステートメントの出力を 0 にするには、整数にキャストする必要があります。

print (int)($a > $b);
于 2013-04-12T01:13:52.200 に答える
0

整数比較 ($a < $b) の戻り値の型はbooleanで、trueまたはfalseになります。
printは、 true の場合は "1" を出力し、 falseの場合は何も出力しないように機能します。

于 2013-04-12T01:11:24.593 に答える