PHP sort array by key based on other array
asort
hoặc usort
có thể làm tốt nhiệm vụ sắp xếp mảng trong PHP, nhưng sẽ như thế nào nếu bạn thực sự muốn sort theo custom key?
Tôi có một ví dụ mảng:
$animals = [
'dog' => ['Pop', 'Milu', 'Reck'],
'cat' => ['Kitty', 'Can', 'Suneo', 'Tom'],
'mouse' => ['Mickey', 'Jerry', 'Donal'],
];
Và tôi muốn sắp xếp lại theo thứ tự như sau:
$animals = [
'dog' => ['Pop', 'Milu', 'Reck'],
'mouse' => ['Mickey', 'Jerry', 'Donal'],
'cat' => ['Kitty', 'Can', 'Suneo', 'Tom'],
];
Nếu như dùng asort
kết quả sẽ là:
$animals = [
'mouse' => ['Mickey', 'Jerry', 'Donal'],
'dog' => ['Pop', 'Milu', 'Reck'],
'cat' => ['Kitty', 'Can', 'Suneo', 'Tom'],
];
Trong khi usort
thì sắp xếp theo value. Như vậy cả 2 trường hợp đều không cho ra kết quả mong muốn.
Để có kết quả sort mong muốn, bạn có thể dùng tip sau:
$animalsSorted = array_replace(array_flip(array('dog', 'mouse', 'cat')), $animals);
Khi ấy kết quả sẽ là: