PHP оператор всегда возвращает false

У меня есть небольшой скрипт, который извлекает данные из IMDB с помощью omdbapi. Мне удалось получить данные с сайта, но когда я пытаюсь проверить правильность постера фильма, он всегда возвращает false.

            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

Это работало некоторое время назад, но как-то остановилось...

2 ответа

Решение

Ваше заявление if написано неправильно. !$info['Poster'] средства if $info['Poster'] is not true, Если есть значение, оно будет переведено в false как жонглирование типа PHP преобразует любую непустую строку в true и ! оператор делает это ложным. false не равно N/A как жонглирование типа преобразует это в true (непустые строки всегда true). false не равно `истине.

Вы хотите использовать != что значит not equal to

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

Просто переместите ! от вашего состояния, и все должно работать как положено. В ваших условиях вы спрашиваете, является ли $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;
        }
Другие вопросы по тегам