($a > $b)以下のコードでは何も表示されない比較操作の結果を表示しようとしていますが、操作($a < $b)は結果を表示します1。
なぜ最初の操作がそのまま返っ0てこないのか不思議falseです。
<?php
$a = 1;
$b = 5;
print ($a > $b);
echo "Output";
print ($a < $b);
?>
($a > $b)以下のコードでは何も表示されない比較操作の結果を表示しようとしていますが、操作($a < $b)は結果を表示します1。
なぜ最初の操作がそのまま返っ0てこないのか不思議falseです。
<?php
$a = 1;
$b = 5;
print ($a > $b);
echo "Output";
print ($a < $b);
?>
残念ながら、それは非常に一般的な誤解です。0「ではない」false。falseはfalseブール値です。0は0、数字です。タイプセーフでない比較では0大まかに等しい。false
echoまたはの場合print false、文字列にキャストされています。false文字列へのキャストは""空文字列です。true文字列へのキャストは"1"、文字列 "1" です。
http://php.net/manual/en/language.types.string.php#language.types.string.castingを読んでください。
これは、PHP が false 値を処理する方法が原因です。
echo ($a > $b)また、何も出力しません。
false 条件に対してステートメントの出力を 0 にするには、整数にキャストする必要があります。
print (int)($a > $b);
整数比較 ($a < $b) の戻り値の型はbooleanで、trueまたはfalseになります。
printは、 true の場合は "1" を出力し、 falseの場合は何も出力しないように機能します。