Почему мое первое значение в reset () равно нулю?

У меня есть сервер с каталогом, полным книг. Я написал скрипт, который просматривает этот каталог и перечисляет все PDF-файлы, которые находятся внутри. Затем я сделал еще один шаг и начал искать книги в Google и возвращал изображение и описание этих книг. Для некоторых книг это работает отлично, но для многих из них я получаю эту ошибку …

Предупреждение: reset () ожидает, что параметр 1 будет массивом, ноль указан в bookDescriber.php в строке 49

Это код, который выдает эту ошибку (все это внутри большого foreach, в котором перечислены все файлы PDF в каталоге). последняя строка этого кода — строка 49.

//search GoogleBooks for a description
$item = file_get_contents("https://www.googleapis.com/books/v1/volumes?q=$v&maxResults=1");
$item = json_decode($item);
$item = reset($item->items);

$ v в приведенном выше URL-адресе — это просто имя файла книги, так что это одна из ссылок, которые она сгенерирует, и, как вы можете видеть, она возвращает информацию … (если вы скопируете всю ссылку полностью до maxResults = 1 затем данные возвращаются, может быть, иногда пробелы в URL не имеют значения, а иногда они имеют значение? Я потерян)

https://www.googleapis.com/books/v1/volumes?q=Ajax полное руководство.pdf&maxResults = 1

так почему первый параметр в моем reset () установлен в null ??? Помогите, пожалуйста!!

0

Решение

Я протестировал этот фрагмент, и его можно восстановить, если:

  • $ v пусто
  • Книга не существует

Если книга не существует, выдается нулевая ошибка и Google возвращает:

{
"kind": "books#volumes",
"totalItems": 0
}

Этого недостаточно для создания массива. Вам лучше иметь такой чек:

<?php
$item = file_get_contents("https://www.googleapis.com/books/v1/volumes?q=$v&maxResults=1");

if(is_array($item))
{
$item = json_decode($item);
$item = reset($item->items);
}
else
{
return false; // echo 'no book';
}
?>
0

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

Других решений пока нет …

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