我试图显示比较操作的结果,($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
当 youecho
或print
false
时,它被转换为字符串。false
转换为字符串是""
,一个空字符串。true
转换为字符串是"1"
,字符串“1”。
阅读http://php.net/manual/en/language.types.string.php#language.types.string.casting。
整数比较 ($a < $b) 具有返回类型boolean,可以是true或false。
print以这样的方式工作,它为true打印“1”,为false 不打印任何内容。
这是由于 PHP 处理错误值的方式。
echo ($a > $b)
也不会输出任何内容。
要让您的语句输出 0 以表示错误条件,您需要强制转换为整数:
print (int)($a > $b);