[PHP-users 18195]多次元配列のソート
motacilla cinerea
motacilla_cinerea @ yahoo.co.jp
2003年 10月 2日 (木) 15:52:53 JST
お世話になります。ゆっけと申します。
「多次元配列」「項目でソート」等で、過去ログやグーグル検
索し、参照したのですが、
やりたい事に上手く応用出来ませんでしたので、お助け下さい
。
データベースからデータを読み出し、
一定期間の売上総量と総金額それぞれのランキング表を作ろう
としています。
(下記のような)
10月1日 10月2日 10月3日
__________________________________
氏名A 5 氏名e 7 氏名q 9
氏名B 4 氏名d 3 氏名x 8
氏名c 3 氏名v 2 氏名v 7
氏名e 2 氏名A 1 氏名A 4
集計を取っていく過程で、データを読み出しつつ、
$All_Array[$日付][$氏名][数量]+=その人のその日の売上数
量 →最終的には売上総量
$All_Array[$日付][$氏名][金額]+=その人のその日の売上金
額 →最終的には売上総金額
という形にデータを加算しています。
これを
$All_Array[$日付]ごとに
[$氏名][数量] のvalueで並べ替えを
したいのです。
$All_Array[$日付][氏名A][数量] =>6
$All_Array[$日付][氏名B][数量] =>7
$All_Array[$日付][氏名C][数量] =>5
なら
$All_Array[$日付]の中に並んでいる配列の順序を
$氏名B(配列) $氏名A(配列) $氏名C(配列) に並べかえし
たいということなのですが、
foreach($日付 as $value)
{
$tempHiduke = $value
usort($All_Array[$tempHiduke],関数);}
とし、日単位の並べかえ処理にし、
並べ替えの関数の方は
function 関数名($a,$b){
$names=array_keys($a);←名前配列
foreach($names as $value)
{
return cmp($a[$value][SG_SU],$b[$value][SG_SU]);
}
}
としています。エラーも出ない代わりに、並べ替え自体も全く
なされない状態です。
1)並べ替えをしたい配列のキーが変数であることと、
2)2階層上の配列自体を並べ替えしたい・・・・という事で
応用が効かず、躓いているのだと思うのですが、
似たような事をされた方、お分かりの方がいらっしゃれば、ご
教授いただけると助かります。
どうぞよろしくお願いいたします。
PHP-users メーリングリストの案内