在PHP 7中,测试布尔转换时,使用bool()和使用FILTER_VALIDATE_BOOLEAN的这两种方法有什么区别?他们不应该产生相同的结果吗?如果没有,为什么?
//reusable functions
function view($data) {
echo sprintf('<pre>%s</pre>',var_dump((bool)$data));
}
function fview($data) {
echo sprintf('<pre>%s</pre>', var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN)));
}
//check if the following values are booleans
view(""); //false
view(1); //true
view(-2); //true
view("foo"); //true
view(2.3e5); //true
view(array(12)); //true
view(array()); //false
view("false"); //true
echo "<hr />";
fview(""); //false
fview(1); //true
fview(-2); //false
fview("foo"); //false
fview(2.3e5); //false
fview(array(12)); //false
fview(array()); //false
fview("false"); //false