imdb — оператор 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") {
4

Другие решения

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

По вопросам рекламы [email protected]