人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

複数のAPIで取得したデータを配列に格納したいのですが方法を教えて下さい。
(二週間ほどはまっていますので助言を頂けると助かります。)

具体的にやりたいことは、アマゾンのProduct Advertising APIやヤフーのオークションAPIにリクエストを送り返ってきたxmlからそれぞれ商品名や価格の値を取得し、最終的に価格等で並び替えをして出力するというものです。

各APIからxmlを取得して普通に出力することは出来ます。
foreachのループ内で処理しようと試したのですがうまく行きませんでした。

■作成ソースのイメージ(PHP)
//Product Advertising APIでxmlを取得
foreach ($Items->Item as $item) {
$arr += array(
'name' => $item->商品名,
'price' => $item->価格
);
}

//続いてヤフーオークションAPIでxmlを取得
foreach ($result->Result->Item as $item) {
$arr += array(
'name' => $item->商品名,
'price' => $item->価格
);
}

//価格で並び替え
foreach ($arr as $key => $value) {
$price[$key] = $value['price'];
}
array_multisort($price, SORT_DESC, $arr);

//出力
for ($i = 0; $i <= 10; $i++) {
echo '<b>' . $arr['name'][$i] . '</b>' . $arr['price'][$i] . '<br>' ;
}

●質問者: 雨の日
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● 井戸端さん
●150ポイント

$arr += array(

データ追加部分がおかしいわ。

$arr[] = array(

関係ないかもだけどSORT_DESCでいいの?SORT_ASCのほうが良くないかしら?


雨の日さんのコメント
ご指摘の通りでした。 ありがとうございます。

2 ● a-kuma3
●150ポイント ベストアンサー

以下のふたつを修正する必要があります。

質問にあるソースのイメージに手を入れてみました。

<?php
//Product Advertising APIでxmlを取得
foreach ($Items->Item as $item) {
// ★ += ではなく、[] =
 $arr[] = array(
 'name' => $item->商品名,
 'price' => $item->価格
 );
}

//続いてヤフーオークションAPIでxmlを取得
foreach ($result->Result->Item as $item) {
// ★ += ではなく、[] =
 $arr[] = array(
 'name' => $item->商品名,
 'price' => $item->価格
 );
}

//価格で並び替え
foreach ($arr as $key => $value) {
 $price[$key] = $value['price'];
}
array_multisort($price, SORT_DESC, $arr);

//出力
for ($i = 0; $i <= 10; $i++) {
// ★ ['name'][$i] ではなく、[$i]['name']。'price' も同様
 echo '<b>' . $arr[$i]['name'] . '</b>' . $arr[$i]['price'] . '<br>' ;
}
?>

http://www.php.net/manual/ja/language.types.array.php#language.types.array.syntax.modifying


雨の日さんのコメント
サンプルソースありがとうございました。 無事うまくいきました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ