PHP 声明总是 return 错误

PHP Statement always return false

我有一个小脚本 使用 omdbapi 从 IMDB 获取数据。 我设法从该网站获取数据,但当我尝试检查电影海报是否有效时,它总是 returns 错误。

            if(!$info['Poster'] == "N/A") {
                $url = $info['Poster'];
                $img = 'images/'.$info["imdbID"].'.jpg';
                file_put_contents($img, file_get_contents($url));
                echo 'Downloaded';
            } else {
                echo '!Downloaded';
                $noCover = true;
            }

$info['Poster'] 包含与此类似的数据: http://ia.media-imdb.com/images/M/MV5BMTM0MDgwNjMyMl5BMl5BanBnXkFtZTcwNTg3NzAzMw@@._V1_SX300.jpg

不久前它还在工作,但不知何故停止了...

只需将 ! 从您的条件中移开,它就会按预期工作。你在你的条件下询问 $info['Poster'] 是否为假,它不会是假的,因为它有一个字符串值。因此,您将布尔值与字符串值进行比较,false 将始终不同于 "N/A:

        if($info['Poster'] !== "N/A") {
            $url = $info['Poster'];
            $img = 'images/'.$info["imdbID"].'.jpg';
            file_put_contents($img, file_get_contents($url));
            echo 'Downloaded';
        } else {
            echo '!Downloaded';
            $noCover = true;
        }

你的if语句写错了。 !$info['Poster'] 表示 if $info['Poster'] is not true。如果有一个值,它将被转换为 false,因为 PHP 的类型转换将任何非空字符串转换为 true,而 ! 运算符使其为假。 false 不等于 N/A,因为类型转换会将其转换为 true(非空字符串始终为 true)。 false 不等于 `true.

您的意思是使用 !=,这意味着 not equal to

if($info['Poster'] != "N/A") {