mysql の in ステートメントを使用して取得された結果など、データベース クエリの結果は直接使用できない場合があるため、結果を何らかの方法で並べ替える必要があります。
例 4. データベース結果の並べ替え
この例では、データ配列内の各セルがテーブル内の行を表します。これは、データベースに記録される典型的なデータのコレクションです。
例
のデータは次のとおりです。
-------+------
67 | 2
86 | 1
85 | 6
98 | 2
86 | 6
67 | 7
データはすべて data という名前の配列に格納されます。これは通常、mysql_fetch_assoc() などのループを通じてデータベースから取得されます。
$data[] = array('ボリューム' => 67, 'エディション' => 2);
$data[] = array('ボリューム' => 86, 'エディション' => 1);
$data[] = array('ボリューム' => 85, 'エディション' => 6);
$data[] = array('ボリューム' => 98, 'エディション' => 2);
$data[] = array('ボリューム' => 86, 'エディション' => 6);
$data[] = array('ボリューム' => 67, 'エディション' => 7);
?>
http://sucai.knowsky.com/
この例では、ボリュームは降順でソートされ、エディションは昇順でソートされます。
これで行を含む配列ができましたが、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