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

PHP5での3つの多次元配列を引っ付けて1つの多次元配列にする方法を教えてください。
また、ひとつになった多次元配列にソートを掛けたいのです。


(A)カテゴリ多次元配列
cat_id,cat_nm,cat_sort
1,ウェイクボード,B
2,スノーボード,A
3,サーフボード,C
4,ボードセイリング,D
5,カイトボード,E


(B)サブカテゴリ多次元配列
sub_id,sub_cat,sub_sort
1,スクール,a
2,トーイング,c
3,レンタル,d
4,販売,e
5,ツアー,b

(C)
cat_id,sub_id,flg
1,1,0
1,2,1
1,3,0
1,4,1
2,1,0
2,3,0
2,5,0
3,1,0
3,3,0
4,1,1


(C)の多次元配列に(A)と(B)をくっつけたいのです。
500文字に収まりませんでしたので、コメント欄にくっつけた多次元配列と、ソート後のイメージを追加しておきます。

●質問者: seadwell
●カテゴリ:ウェブ制作
✍キーワード:ひとつ イメージ ウェイクボード カイトボード カテゴリ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● nandedarou
●100ポイント ベストアンサー
// (A)の多次元配列が、$Aだとします。
// 例えば、echo $Cat['1']['cat_nm']; で 「ウェイクボード」 と表示されるように
// 配列の添え字をcat_idとする新しい、多次元配列$Catをつくる
foreach( $A as $row ){
 $cat_id = $row['cat_id'];
 $Cat[ $cat_id ] = $row;
}

// (B)の多次元配列が、$Bだとします。
// 例えば、echo $Sub['1']['sub_cat']; で 「スクール」 と表示されるように
// 配列の添え字をsub_idとする新しい、多次元配列$Subをつくる
foreach( $B as $row ){
 $sub_id = $row['sub_id'];
 $Sub[ $sub_id ] = $row;
}

// (C)の多次元配列が、$Cだとします。
// 合体した新たな多次元配列$Newを作成する。
// その際、添え字を「Ba」というように、cat_sortとsub_sortを合成したものにする
foreach( $C as $row ){
 
 $cat_id = $row['cat_id'];
 $sub_id = $row['sub_id'];
 $key = $Cat[ $cat_id ]['cat_sort'].$Sub[ $sub_id ]['sub_sort'];
 
 $New[ $key ] = array(
 'cat_id' => $cat_id ,
 'cat_nm' => $Cat[ $cat_id ]['cat_nm' ] ,
 'cat_sort' => $Cat[ $cat_id ]['cat_sort'] ,
 'sub_id' => $sub_id ,
 'sub_nm' => $Sub[ $sub_id ]['sub_cat' ] ,
 'sub_sort' => $Sub[ $sub_id ]['sub_sort'] ,
 'flg' => $row[ 'flg' ] ,
 );
 
}

// $Newを添え字でソート(つまり、第一をcat_sortで、第二をsub_sortでソートしたことになる)
ksort($New);

以上、いかがでしょうか?

◎質問者からの返答

kurukuru-nekoさま、コメントでここまでのご回答ありがとうございます。

nandedarouさま、1度ならず2度までもお手数をおかけしました。

また、私の説明不足とい誤字でご迷惑をおかけしたようです。


> もしかして、sub_nmとしたかったのでは?

ご指摘のとおりです。


それと、前回の回答の続きという注釈が必要でした。

http://q.hatena.ne.jp/1174771937


あと、cat_sortとsub_sortは説明がわかりやすくなるかと思い英字にしたのですが、実際は数字で行います。


言い訳ですが、寝てなくてモウロウとなっていました。

説明不足でホントすいませんm(_ _)m

前回の質問で回答を頂き、その後の応用はバッチリのつもりではいたのですが・・・。

一応ネットで、ソートや多次元配列の合体は検索掛けてみて、例文は見つけたのですが、今一自分のやりたいことに応用できませんでした。

とりあえず、お二人の教えていただいたコードを元に作成し、正常稼動するまで確認したいと思います。

また、無事実行したならコメントで改めて御礼を申したいと思います。

関連質問


●質問をもっと探す●



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