即使条件为假,代码也会执行

时间:2014-09-10 01:38:18

标签: php if-statement

我只是在变量copy()$is_no_art时才在PHP中运行false命令。但即使copy()$is_no_arttrueNULL语句也始终在执行。请检查以下代码:

if($ele != NULL) {
    foreach($ele as $e) {
        $album_art_url = trim($e->src);
        if(strpos($album_art_url, 'default') === false) {
            echo "image OK\n";
            $is_no_art = false;
        } else {
            echo "default image\n";
            $is_no_art = true;
        }
    }
} else {
    echo "not found\n";
    $is_no_art = true;
}
if($is_no_art === false || $is_no_art != NULL) {
    copy($album_art_url, 'img/' . $album_id . '.jpg');
}

我使用的逻辑有什么问题吗?如果是,如何纠正?

1 个答案:

答案 0 :(得分:4)

如果$is_no_arttruefalse则不是null。这意味着if语句的第二部分将始终为true,并且该代码将执行。无论如何,这是必要的,因为你的第一条规则就是你所需要的:

if($is_no_art === false) { // false is not null so you're good to go
    copy($album_art_url, 'img/' . $album_id . '.jpg');
}