[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 メーリングリストの案内