Как отсортировать многомерный ассоциативный массив в php?

Пользователь

от greyson , в категории: PHP , год назад

Как отсортировать многомерный ассоциативный массив в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от josie , год назад

@greyson 

В PHP есть функция array_multisort, которая позволяет сортировать многомерные массивы по любому измерению (столбцу, строке и т.д.). Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$array = array(
    array('name' => 'John', 'age' => 25),
    array('name' => 'Jane', 'age' => 30),
    array('name' => 'Mike', 'age' => 20)
);

// сортировка по возрасту по возрастанию
$ages = array_column($array, 'age');
array_multisort($ages, SORT_ASC, $array);

print_r($array);


Результат:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
Array
(
    [0] => Array
        (
            [name] => Mike
            [age] => 20
        )

    [1] => Array
        (
            [name] => John
            [age] => 25
        )

    [2] => Array
        (
            [name] => Jane
            [age] => 30
        )
)


В данном примере мы сначала используем функцию array_column для получения массива ages, содержащего значения возраста из первоначального массива. Затем мы используем array_multisort, чтобы отсортировать исходный массив $array по возрастанию значениями массива ages.