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.

Need help integrating this into your project?

Our team of expert developers can help you build your custom application from scratch.

Hire DigitalCodeLabs