Php 使用GoogleImagesAPI和CURL检索图像时总是得到相同的链接

Php 使用GoogleImagesAPI和CURL检索图像时总是得到相同的链接,php,curl,Php,Curl,我正在尝试使用Google的API和PHP获取大量不同的图像。代码对单个图像很有效,但是当我尝试在for循环中使用相同的代码获取不同主题的图像时,我总是只得到第一个结果: $images = array("ironman poster", "superman returns poster", "the croods poster", "batman forever poster"); foreach ($images as $i) { $image = rawurlencode($i)

我正在尝试使用Google的API和PHP获取大量不同的图像。代码对单个图像很有效,但是当我尝试在for循环中使用相同的代码获取不同主题的图像时,我总是只得到第一个结果:

$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;
}
$images=array(“铁人海报”、“超人归来海报”、“克罗兹海报”、“永远的蝙蝠侠海报”);
foreach($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\u url\u 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$query; 回声“
”; } 函数获取url内容($url){ $crl=curl_init(); curl_setopt($crl,CURLOPT_USERAGENT,'Mozilla/4.0(兼容;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\u exec($crl); 卷曲关闭($crl); 返回$ret; }
在循环迭代之前,需要定义
$results
数组。我不确定为什么它不起作用,也许其他人可以解释一下

工作解决方案:

$images=array(“铁人海报”、“超人归来海报”、“克罗伊兹海报”、“永远的蝙蝠侠海报”)

foreach($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\u url\u contents($query);
$data=json_decode($json);
$results=array();//在这里定义数组!
foreach($data->responseData->results as$result){
$results[]=array(“url”=>$result->url,“alt”=>$result->title);
}
echo$results[0]['url'];
回声“
”; echo$query; 回声“
”; }
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 />";
}