我正在尝试使用Google的API和PHP获得许多不同的图像。该代码适用于单个图像,但是当我尝试在FOR-LOOP中使用相同的代码获取不同的主题图像时,我始终只会得到第一个结果:
$images = array("ironman poster", "superman returns poster", "the croods poster", "batman forever poster");
foreach ($images as $i) {
$image = rawurlencode($i);
$query = "https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=".$image."&imgsz=large&as_filetype=jpg";
$json = get_url_contents($query);
$data = json_decode($json);
foreach ($data->responseData->results as $result) {
$results[] = array("url" => $result->url, "alt" => $result->title);
}
echo $results[0]['url'];
echo "<br />";
echo $query;
echo "<br />";
}
function get_url_contents($url) {
$crl = curl_init();
curl_setopt($crl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)');
curl_setopt($crl, CURLOPT_URL, $url);
curl_setopt($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($crl, CURLOPT_CONNECTTIMEOUT, 5);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
您需要$results
在循环迭代之前定义数组。我实际上不确定为什么它不起作用,也许其他人可以详细说明?
工作解决方案:
$ images = array(“钢铁侠海报”,“超人归来海报”,“ croods海报”,“蝙蝠侠永远海报”);
foreach ($images as $i) {
$image = rawurlencode($i);
$query = "https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=".$image."&imgsz=large&as_filetype=jpg";
$json = get_url_contents($query);
$data = json_decode($json);
$results = array(); //define array here!
foreach ($data->responseData->results as $result) {
$results[] = array("url" => $result->url, "alt" => $result->title);
}
echo $results[0]['url'];
echo "<br />";
echo $query;
echo "<br />";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句