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

Php 即使条件为false,代码也会执行,php,if-statement,Php,If Statement,只有当变量$is\u no\u art为false时,我才尝试在PHP中运行copy()命令。但是copy()语句始终在执行,即使$是\u no\u art是true或NULL。检查以下代码: if($ele != NULL) { foreach($ele as $e) { $album_art_url = trim($e->src); if(strpos($album_art_url, 'default') === false) {

只有当变量
$is\u no\u art
false
时,我才尝试在PHP中运行
copy()
命令。但是
copy()
语句始终在执行,即使
$是\u no\u art
true
NULL
。检查以下代码:

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');
}

我使用的逻辑有问题吗?如果是,如何更正此问题?

如果
$为非艺术
则它不是
。这意味着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');
}

如果
$is\u no\u art
true
false
则它不是
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');
}

但我默认为$is\u no\u art=NULL。可能存在这样一种情况,即我在if($ele!=NULL)中发布的整个代码可能无法执行。那么代码块与copy()语句会有什么反应呢?除非
$is\u no\u art
更改为
false
,否则将永远无法访问代码中的其他地方
copy()
<代码>错误!==空但我默认为$is\u no\u art=null。可能存在这样一种情况,即我在if($ele!=NULL)中发布的整个代码可能无法执行。那么代码块与copy()语句会有什么反应呢?除非
$is\u no\u art
更改为
false
,否则将永远无法访问代码中的其他地方
copy()
<代码>错误!==空