使用 IN 查詢時,MySQL 不保證回傳順序,需在 PHP 中對結果集進行自定義排序。本文示範如何將二維陣列依指定欄位進行多重排序。
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
volume 降序(SORT_DESC)edition 升序(SORT_ASC)foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
array_multisort(),最後一個參數傳入原陣列 $data 以同步排序:array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
| volume | edition |
|---|---|
| 98 | 2 |
| 86 | 1 |
| 86 | 6 |
| 85 | 6 |
| 67 | 2 |
| 67 | 7 |
此技巧適用於任何從資料庫取得的二維陣列排序場景。