我正在尝试显示比较操作($a > $b)
的结果,该结果不显示以下代码的任何内容,而操作($a < $b)
显示结果1
。
我想知道为什么第一个操作不会返回0
,因为它是false
?
<?php
$a = 1;
$b = 5;
print ($a > $b);
echo "Output";
print ($a < $b);
?>
答案 0 :(得分:3)
不幸的是,这是一个非常常见的误解。 0
“是”不是false
。 false
是false
,是一个布尔值。 0
是0
,是一个数字。 <{1}}在非类型安全比较中松散等于0
。
当您false
或echo
print
时,它会被转换为字符串。 false
强制转换为字符串为false
,为空字符串。 ""
强制转换为字符串为true
,字符串为“1”。
阅读http://php.net/manual/en/language.types.string.php#language.types.string.casting。
答案 1 :(得分:0)
整数比较($ a&lt; $ b)的返回类型为布尔,可以是 true 或 false 。
print 的工作方式是: true 打印“1”, false 打印
答案 2 :(得分:0)
这是由于PHP处理错误值的方式。
echo ($a > $b)
也不会输出任何内容。
要使语句输出0表示错误条件,您需要转换为整数:
print (int)($a > $b);