この記事では、PHP 配列の並べ替えとは、実際にはデータベース クエリからの結果セットを並べ替えることです。 mysql の in ステートメントを使用して取得された結果など、データベース クエリの結果は直接使用できない場合があるため、結果を何らかの方法で並べ替える必要があります。このとき、PHP 配列をソートする必要があります。データベースの結果を並べ替えるには、次の例を参照してください。
この例では、データ配列の各セルがテーブル内の行を表します。これは、データベースが配列データを保存する一般的な方法です。
例のデータは次のとおりです。
ボリューム | エディション
-------+------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7
データはすべて data という名前の配列に格納されます。これは通常、mysql_fetch_assoc() などのループを通じてデータベースから取得された結果です (実際、この関数は mysql_fetch_assoc() 関数と同じと考えることができます。具体的な違いについては、次のキーの違いを参照してください。 PHP マニュアルを参照してください)。
$data[] = array('ボリューム' => 67, 'エディション' => 2);
$data[] = array('ボリューム' => 86, 'エディション' => 1);
$data[] = array('ボリューム' => 85, 'エディション' => 6);
$data[] = array('ボリューム' => 98, 'エディション' => 2);
$data[] = array('ボリューム' => 86, 'エディション' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
この例では、ボリュームは降順でソートされ、エディションは昇順でソートされます。
これで行を含む配列ができましたが、array_multisort() には列を含む配列が必要なので、次のコードを使用して列を取得し、並べ替えます。
// 列のリストを取得します
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// データをボリュームに従って降順に、エディションに従って昇順に並べます
// $data を最後のパラメータとして使用し、共通キーでソートします
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
データ コレクションが並べ替えられ、結果は次のようになります。
ボリューム | エディション
-------+------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7
実際には、arsort()、asort()、ksort()、krsort()、natsort()、natcasesort()、PHP の配列配列に付属する rsort など、ソート時に使用できるメソッドが多数あります。 .()、usort()、array_multisort()、uksort()。