错误效果很好,但是当我返回true时,我得到一个true1为什么?
$num = 3;
function number($num)
{
for($i = 2; $i < $num; $i++) {
if($num % $i == 0) {
echo("false");
return false;
}
}
echo("true");
return true;
}
echo number($num);
答案 0 :(得分:1)
因为PHP TRUE
与字符串格式中的1相同。但是,PHP处理数据类型的方式不同,这就是您需要使用===
运算符来验证类型和数据的原因。
您进行的任何比较都应使用===
运算符。
查看实际返回内容的一种方法是在输出中使用var_dump
。
答案 1 :(得分:1)
回显真实将永远给你1.尝试
var_dump($num);
这将显示变量的类型和值是什么。你会在那里看到它。
答案 2 :(得分:1)
当您尝试回显某个值时,它的值将转换为字符串。所以,你试图回应布尔值。好的,让我们阅读有关Converting to string
的文档布尔值TRUE值转换为字符串“1”。 Boolean FALSE转换为“”(空字符串)。
答案 3 :(得分:0)
当您echo number($num);
true
被强制转换为字符串时出现'1'。
答案 4 :(得分:0)
在您的情况下,您隐式将布尔值true
转换为整数,其值为1
。
要严格比较,您需要使用类型和值比较,即===
运算符。
此外,var_dump()
和print_r()
会显示变量的类型。