我知道PHP的比较运算符不是100%,因为自动类型声明。
我做了一些测试并找到了这段代码
<?php
function foo($answer) {
if ($answer > 10) {
return true;
} else {
return $answer;
}
}
if (foo(11)) {
echo "11 is bigger than 10<br />";
}
if (foo(9)) {
echo "9 is bigger than 10<br />";
}
?>
输出结果为:
11大于10 9大于10
有人可以解释一下代码在此比较中失败的地点和原因。
答案 0 :(得分:4)
因为return $answer
在两个测试用例中都是真实的。
评估结果为:
if (11) { ...
if (9) { ...
答案 1 :(得分:1)
函数foo()
总是返回一些值。在这种情况下,boolean和int类型。在比较返回值时,请确保您更严格。
<?php
function foo($answer) {
if ($answer > 10) {
return true;
} else {
return $answer;
}
}
if (foo(11) === true) {
// This returned TRUE
echo "11 is bigger than 10<br />";
}
if ( is_int(foo(9)) === true ) {
//This returned int
echo "9 is bigger than 10<br />";
}
?>
答案 2 :(得分:1)
你可以这样做,
<?php
function foo($answer) {
return ($answer > 10);
}
if (foo(11)) {
echo "11 is bigger than 10<br />";
}
if (foo(9)) {
echo "9 is bigger than 10<br />";
}
?>
答案 3 :(得分:0)
你正在以错误的方式比较,$ answer是非零值,而在PHP中使用条件时,每个非零值都被认为是真的。
function foo($answer) {
if ($answer > 10) {
return true;
} else {
return false;
}
}