
楽天市場ジャンル検索APIを使って、
任意の自ジャンル(current)から、子ジャンル(children->child)一覧を
取得し表示しようと思っているのですが、
なぜかAPIから取得した子ジャンルたちが、
おかしな並び順で取得されてしまいます。
例えば
「CD・DVD・楽器」のジャンル「genreId=101240」でリクエストを投げると、
CD : 101311
その他 : 112960
ビデオ : 101327
Blu-ray : 505034
DVD : 101354
レコード : 200531
カセット : 205900
LD : 200532
楽器 : 112493
といった並び順でAPIから返ってきます。
なんで「その他」が上から2番目なんだ・・・orz
といった感じで。
理想としては、
DVD : 101354
Blu-ray : 505034
CD : 101311
楽器 : 112493
レコード : 200531
カセット : 205900
ビデオ : 101327
LD : 200532
その他 : 112960
と並び替えたいのですが、
五十音順でもないし、ジャンルIDの昇順降順でもないし、
以前の楽天市場ジャンル検索APIでは、
ちゃんと並んでたのに・・・orz
どうやったら並び替え出来るのでしょうか?
どうかご教授のほどお願いします。
No.1ベストアンサー
- 回答日時:
楽天APIのマニュアル読んでも、特に指定する方法はなさそうですね。
受け取ってから自前で並べ替えるしかないのではないでしょうか。
<?php
$data; //$dataを楽天から受け取ったジャンルの一覧として、
$sort_master = array('101354', '505034', '101311', '112493' ・・・・); //並び替え用マスタ
$sort_end = '112960'; //その他が必ず一番最後にくるようにするとして。
$sorted = array(); //並び替え後のデータを格納
$end = array(); //その他格納用
$cnt = count($sort_master); //indexを保持したいので、配列数を取得しておく
foreach($data['children'] as $child){
if(in_array($child['child']['genreId'], $sort_master)){ //並べ替えマスタに存在するジャンルIDだったら
$pos = array_search($child['child']['genreId'], $sort_master); //マスタの配列キーを取得して
$sorted[$pos] = $child; //そのキーに格納
}elseif($child['child']['genreId'] == $sort_end){
$sort_end = $child; //その他はその他用の変数にいれておく
}else{
$sorted[$cnt++] = $child; //マスタに存在しない奴らは並び順を添字を並び替えマスタの最大値より大きい値で保存
}
}
//最後にその他を$sortedに追加
$sorted[] = $sort_end;
?>
とか、ぱっと思いついた感じで書いてみました。
コレを全ジャンルにかけるのは正直微妙ではありますが、特定のジャンルのみサイトに表示されるのであれば、
そんなには問題ないのかなと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- スピーカー・コンポ・ステレオ AVアンプで映像を視聴しています。 4 2022/07/31 05:10
- ビデオカード・サウンドカード PCで、ステレオ楽曲を聴きたい 9 2022/04/06 14:31
- その他(悩み相談・人生相談) 興味のあるアニメなどのBlu-rayの売却 3 2023/07/19 20:58
- Bluetooth・テザリング スマホの音楽を車で聴くために(オーディオにBluetoothが付いてないので)FMトランスミッターを 2 2023/02/12 11:14
- 作詞・作曲 【作曲で大事なこととは?】 作曲において重要なのって、音楽理論や楽典の知識もそうですが、ジャンルとそ 7 2023/04/09 04:46
- 楽器・演奏 SEKAI NO OWARIのHey HoのMV、3:20頃から流れる音楽が、どこかの国の民族音楽の 1 2022/09/29 18:57
- 洋画 ■映画音楽(2) 7 2023/08/13 20:08
- Excel(エクセル) 【エクセル】並び替えからの並び替え方法 7 2022/07/22 09:46
- 洋楽 こういう洋楽系の曲目、ジャンルは何に該当するか? 1 2023/03/06 12:59
- ロック・パンク・メタル 高校生男です。 私は音楽のジャンルだとhiphopが一番好きで一番聞いているのもhiphopなのです 2 2023/05/18 21:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pager::factory()の使い方がわ...
-
行列
-
配列の比較
-
Tableの背景色を交互に変えたい
-
ランダムの比較について
-
array_uniqueについて
-
正規表現
-
重複する文字を1つにするには?
-
MySQLのデータをPHPで多次元...
-
MYSQLとPHPによって取得する多...
-
多次元配列をエンコードする関...
-
配列の要素(value)に、変数を...
-
C言語の配列をPush(追加)する...
-
多次元配列からxmlツリーを作成...
-
MySQLから受け取ったデータを連...
-
前のページで入力したものをあ...
-
php 2つの配列の内、片方を元に...
-
ファイルの逆読みってできますか?
-
AならBを読み込む場合
-
連想配列からの値の取り出し
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語の配列をPush(追加)する...
-
行列
-
CArrayの要素としてCStringArra...
-
Texでの数式
-
読み(あ行~わ行)ごとに分け...
-
CArrayのソート
-
C言語 最大値と最小値を求めて...
-
fgetc関数について
-
PHPのmin関数、「1」以上の数値...
-
連想配列の文字コードを変換
-
STLのvectorで作った配列をメン...
-
C言語のchar ポインタ
-
C言語で全角文字の扱いについて
-
配列を指定した順序でソート
-
php で1から100までの素数の表...
-
delphi 2次元配列がわかりません
-
np.stack()とnp.array()の違い
-
array_intersectで空欄を比較し...
-
cakephpでのトランザクション処...
-
verilogで、配列の一部をタスク...
おすすめ情報