У меня есть сервер с каталогом, полным книг. Я написал сценарий, который проходит через этот каталог и перечисляет весь PDF файл, который находится внутри. Затем я сделал еще один шаг и начал искать книги Google и возвращать изображение и описание этих книг. Для некоторых книг это работает отлично, но для большого числа из них я получаю эту ошибку...
Предупреждение: reset() ожидает, что параметр 1 будет массивом, null указан в 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
так почему первый параметр в моем сбросе() установлен в null? Помоги пожалуйста!!
Я тестировал этот фрагмент и его можно воссоздать, если:
Если книга не существует, выбрасывается нулевая ошибка, и 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';
}
?>
var_dump($item)
иvar_dump($item->items)
и покажите вывод. И для пробелов, почему бы вам не попробовать заменить их на+
заранее?