3次元配列を2次元配列にする方法はありますか?
3次元配列を2次元配列にする方法はありますか?
すいません、初心者です。
オープンソースとyahooとgoogleのAPIを使って統合型メタ検索エンジンを作っています。
yahooの結果の配列は2次元配列で出せました。
$search_results[$i]["url"]
google APIは1回のリクエストで8件までしか呼び出せないみたいなので、
curl_multi関数を使って複数のリクエストを同時に取得しています。
そうしたら結果の配列は三次元配列になりました。
$search_results[$id][$i]["url"]
以下googleの関数です。curl_multiの部分等、文字数の関係で省略しています。
省略した部分のソースは下記リンクにのっています。
http://phpspot.org/blog/archives/2008/02/phpapi.html
function search_google($query) {
$curls = array();
$search_results = array();
$i=0;
$site_results = array(
'http://ajax.googleapis.com/&start=0',
'http://ajax.googleapis.com/&start=8',
'http://ajax.googleapis.com/&start=16',
'http://ajax.googleapis.com/&start=24',
'http://ajax.googleapis.com/&start=32',
'http://ajax.googleapis.com/&start=40',
'http://ajax.googleapis.com/&start=48',
'http://ajax.googleapis.com/&start=56');
foreach($curls as $id=>$c) {
$searchs[$id] = curl_multi_getcontent($c);//$cが$site_resultsのリクエスト結果
curl_multi_remove_handle($mh, $c);
$json=json_decode($searchs[$id]);
if($json->responseStatus != 200){exit();}
$responseData = $json->responseData;
$results = $responseData->results;
for($i=0;$i<count($results);$i++){
$title = $current_result->title;
$search_results[$id][$i]["title"]= $title;
}
}
curl_multi_close($mh);
return $search_results;
}
統合型メタ検索にしたいと考えているのでgoogle配列の変数[$id]同士を結合して
yahooの結果と同じく
$search_results[$i]["url"]
のような二次元配列にしたいのですが、そのようなことは可能ですか?
本当は両方とも3次元配列にするという処理が適切だと思いますが、初心者がオープンソースを改良して使用しているので、どこを直せば3次元配列のものをうまく表示できるのかわからないのです。
わかりにくかったらすいません。どうか、よろしくお願いします。
お礼
ありがとうございます。JAVAでやってみます。