(二週間ほどはまっていますので助言を頂けると助かります。)
具体的にやりたいことは、アマゾンの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>' ;
}
以下のふたつを修正する必要があります。
質問にあるソースのイメージに手を入れてみました。
<?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
$arr += array(
データ追加部分がおかしいわ。
$arr[] = array(
関係ないかもだけどSORT_DESCでいいの?SORT_ASCのほうが良くないかしら?
ご指摘の通りでした。
ありがとうございます。
以下のふたつを修正する必要があります。
質問にあるソースのイメージに手を入れてみました。
<?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
サンプルソースありがとうございました。
無事うまくいきました。
サンプルソースありがとうございました。
2014/06/10 22:23:11無事うまくいきました。