Hàm array_multisort có thể được sử dụng để sắp xếp mảng đa chiều dựa trên nhiều khóa:
Ví dụ
$my_list = array(
array('ID' => 1, 'title' => 'data one', 'event_type' => 'one'),
array('ID' => 2, 'title' => 'data two', 'event_type' => 'zero'),
array('ID' => 3, 'title' => 'data three', 'event_type' => 'one'),
array('ID' => 4, 'title' => 'data four', 'event_type' => 'zero')
);
# Danh sách các cột được sắp xếp và dữ liệu của chúng có thể được lấy. Điều này sẽ được truyền cho hàm array_multisort.
$sort = array();
foreach($my_list as $k=>$v) {
$sort['title'][$k] = $v['title'];
$sort['event_type'][$k] = $v['event_type'];
}
# Sắp xếp theo event_type giảm dần và title tăng dần.
array_multisort($sort['event_type'], SORT_DESC, $sort['title'], SORT_ASC, $my_list);
Đối với PHP phiên bản 5.5.0 trở lên:
array_multisort(array_column($my_list, 'event_type'), SORT_DESC, array_column($my_list, 'title'), SORT_ASC, $my_list);
Kết quả
Điều này sẽ tạo ra kết quả sau:
array (
0 => array (
'ID' => 4,
'title' => 'data four',
'event_type' => 'zero',
),
1 => array (
'ID' => 3,
'title' => 'data two',
'event_type' => 'zero',
),
2 => array (
'ID' => 1,
'title' => 'data one',
'event_type' => 'one',
),
3 => array (
'ID' => 2,
'title' => 'data three',
'event_type' => 'one',
),
)