Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Sắp xếp mảng đa chiều theo nhiều khóa trong PHP

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', 
    ), 
)