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

当 youechoprint 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

整数比较 ($a < $b) 具有返回类型boolean,可以是truefalse
print以这样的方式工作,它为true打印“1”,为false 不打印任何内容。

于 2013-04-12T01:11:24.593 回答
0

这是由于 PHP 处理错误值的方式。

echo ($a > $b)也不会输出任何内容。

要让您的语句输出 0 以表示错误条件,您需要强制转换为整数:

print (int)($a > $b);
于 2013-04-12T01:13:52.200 回答