PHP
Sort Multi-dimensional Array by Multiple Keys
Discover how to sort a complex array of associative arrays in PHP using `array_multisort`, applying sorting criteria to multiple specified keys.
<?php
$data = [
['name' => 'John', 'age' => 30, 'city' => 'New York'],
['name' => 'Jane', 'age' => 25, 'city' => 'London'],
['name' => 'Doe', 'age' => 30, 'city' => 'Paris'],
['name' => 'Anna', 'age' => 25, 'city' => 'New York'],
];
// Sort primarily by 'age' (ascending), then by 'name' (ascending)
$ages = array_column($data, 'age');
$names = array_column($data, 'name');
array_multisort($ages, SORT_ASC, SORT_NUMERIC,
$names, SORT_ASC, SORT_STRING,
$data);
print_r($data);
/* Expected output:
Array
(
[0] => Array
(
[name] => Anna
[age] => 25
[city] => New York
)
[1] => Array
(
[name] => Jane
[age] => 25
[city] => London
)
[2] => Array
(
[name] => Doe
[age] => 30
[city] => Paris
)
[3] => Array
(
[name] => John
[age] => 30
[city] => New York
)
)
*/
?>
How it works: This snippet demonstrates how to sort an array of associative arrays by multiple criteria using `array_multisort`. It first extracts the relevant columns into separate arrays using `array_column`, then applies `array_multisort` with desired sort orders and types, modifying the original `$data` array in place.