我的服务器上有一个装满书籍的目录。我编写了一个循环遍历此目录的脚本,并列出了所有位于其中的PDF文件。然后我更进一步,开始搜索谷歌书籍,并带回这些书籍的图片和描述。对于一些书籍来说这很有效,但是对于很多书籍我得到了这个错误......
警告:reset()期望参数1为数组,在第49行的bookDescriber.php中给出null
这是给出此错误的代码(这是一个大的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);
上面url中的$ v只是书的文件名,所以这是它会产生的链接之一,你可以看到这确实会返回信息...(如果你一直复制整个链接到maxResults = 1然后返回数据,可能有时URL中的空格不重要,有时它们会这样做?我迷失了)
https://www.googleapis.com/books/v1/volumes?q=Ajax权威指南.pdf& maxResults = 1
那么为什么我的reset()中的第一个参数设置为null ???请帮助!!
答案 0 :(得分:0)
我已尝试使用该代码段,并且可以在以下情况下重新创建:
如果该图书不存在,则会抛出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';
}
?>