![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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. …
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次元配列のものをうまく表示できるのかわからないのです。
わかりにくかったらすいません。どうか、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
ソース、あんまりちゃんと見てないけれど3次元を2次元にするときに
2次元側がどうなってるか確認したらいいよ。
基本的にどちらも同じ情報の扱い方をしているのなら
{"a","b","c"} <-> {"a","b?c"}
の様な形であるならbとcをクエリ文字「?」で連結しているだけだよね?
そういう事をすれば良いよ。
使ってない物は破棄すればよいし。
この回答への補足
ご回答ありがとうございます。
> {"a","b","c"} <-> {"a","b?c"}
こうする場合、
$search_results[$id][$i]['url'] では
$search_results[$id?$i]['url'] とすれば良いということでしょうか?
わかりにくいと思ったので一応補足です。
googleの3次元配列の結果を print_r で出力すると以下のようになります。
array
([0]=>array
([0]=>array
([url] =>http://abc...
[title]=>abc...
)
[1]=>array
([url] =>http://def...
[title]=>def...
)
)
[1]=>array
([0]=>array
([url] =>http://ghi...
[title]=>ghi...
)
[1]=>array
([url] =>http://jkl...
[title]=>jkl...
)
)
これを以下のようにしたいです。
array
([0]=>array
([url]=>http://abc...
[title]=>abc...
)
[1]=>array
([url]=>http://def...
[title]=>def...
)
[2]=>array
([url]=>http://ghi...
[title]=>ghi...
)
[3]=>array
([url]=>http://jkl...
[title]=>jkl...
)
)
回答のとおり$idと$iのキーをくっつけたらなんとか出来るようになりました!
おかげでスムーズに作業が進みそうです。
本当にありがとうございました!!感謝です!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 Results: In total, 5,963 titles were identified wi 4 2022/12/29 21:29
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) ExcelVBAで質問です。離れた二次元配列を一つにしたい 4 2022/07/26 19:06
- 数学 線形代数学の問題です! Vは 4 次元ベクトル空間とし線形変換 f ∶ V→ V のある基底 v1, 1 2022/06/12 09:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
禁止ワード設定
-
○番目から○番目までの取り出し...
-
文字列連結パターンが多数ある場合
-
phpで検索結果をランダムに表示
-
あいまい検索
-
配列の書き方
-
前のページで入力したものをあ...
-
セッション配列の取得の仕方
-
$_SESSIONに二次元配列を使える...
-
$_SESSIONの中身の取り出し方
-
PHP: 未定義エラーの回避方法を...
-
PHPの構文で間違えが分からない
-
PHPは何故値渡しより参照渡しの...
-
STLのvectorで作った配列をメン...
-
c言語 単位行列
-
三重県南部の温泉
-
【PHP】csvファイルへの書き出...
-
aaa.csvとbbb.csvを条件で抽出...
-
ジャグ配列
-
Zend_Form_Element_Hash
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$_SESSIONに二次元配列を使える...
-
file_existsでファイル名の部分...
-
配列をループでたくさん宣言し...
-
foreachのなかで次のキーを参照...
-
String だと「 ByRef引数の型が...
-
PHPのカッコ[ ]の使い方について
-
配列を回すとき、最後の要素だ...
-
配列一致(要素順番は違うが内容...
-
チェックボックス複数選択 mys...
-
漢字のソートについて
-
postgresql関数をつかったレコ...
-
ネストが深い時のforeachはどう...
-
URLのサブドメインとドメイン部...
-
OCI で、SELECT結果行数を取得...
-
【Smarty】foreach関数やsectio...
-
$_POSTを一括してサニタイズし...
-
phpで、連想配列を普通の配列に...
-
チェックボックスが複数選択で...
-
連想配列のprint_rやvar_dump出...
-
PHP 配列の添字に変数は使えない?
おすすめ情報