PHP自体には多次元配列をソートする機能があります。
bool array_multisort ( array $ar1 [,mixed $arg [,mixed $... [, array $... ]]] )
以下はマニュアルの array_multisort 関数の説明です:
array_multisort () OK 複数の配列を一度に並べ替えたり、1 つ以上の次元に従って多次元配列を並べ替えたりするために使用されます。
関連付けられた (文字列) キー名は変更されませんが、数値キー名は再インデックスされます。
入力配列はテーブルの列として扱われ、行ごとに並べ替えられます。これは SQL の ORDER BY 句の機能と似ています。最初の配列は、ソートされるメインの配列です。配列内の行 (値) が同じであると比較された場合、次の入力配列内の対応する値のサイズに従って並べ替えられます。
マニュアルを見ると、PHP 独自の多次元ソートでは、最初の配列をソートし、その後の順序を調整することがわかります。次のような配列:
array( 'id' => array(1,3,2),
'data'=>array('a','c','b'))
ただID による多次元ソートで十分です。しかし、多くの場合、構築する配列は次のようになります:
array(
array('id'=>1,'data'=>'a'),
array('id'=>3, ' data'=>'c'),
array('id'=>2,'data'=>'b')
);
配列の要素は行に配置されており、並べ替える必要がありますby 列で並べ替えます。 PHP には行列転置のような機能が提供されていないようです。そのため、array_multisort を多次元ソートに直接使用することはできません。ただし、最初にソートされた列を抽出し、それを最初のパラメータとして array_multisort に渡すだけで済みます。
りー