正如标题所说,PHP似乎将整数值0评估为false。
以此片段为例:
http://sandbox.onlinephpfunctions.com/code/13d885fb68359a3154999c2ef85db7c913c49bc5
<?php
if($exists = checkDup()){
echo $exits;
}
else{
echo "error!";
}
function checkDup ($foo = 'blah', $bar = 'blah'){
if ($foo == $bar) return (int) 0;
return false;
}
正如您所看到的,尽管将回复转换为int PHP,但将返回错误解析为错误。
答案 0 :(得分:4)
PHP正在评估很多错误;)
例如null,'',0
您还必须包含类型检查,您可以使用===
或!==
$exists = checkDup();
if($exists !== false){
echo $exits;
}
else{
echo "error!";
}
function checkDup ($foo = 'blah', $bar = 'blah'){
if ($foo == $bar) return 0;
return false;
}
答案 1 :(得分:2)
您应该使用if($exists = checkDup() !== false)
0 == false; //true
0 === false; //false
如果未在if
中指定布尔表达式,它将执行==
运算符