转换为布尔值时如何正确测试

时间:2019-04-12 20:02:54

标签: php-7

在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

0 个答案:

没有答案