我试图显示比较操作的结果,($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);