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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от francisco.friesen , год назад

@vladimir 

В PHP можно использовать функцию array_multisort для сортировки многомерных массивов. Эта функция позволяет сортировать один или несколько массивов сразу, используя различные критерии сортировки.


Например, чтобы отсортировать многомерный массив по значениям одного из его полей, можно использовать следующий код:

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

$sort_by_age = array();

foreach ($people as $key => $person) {
    $sort_by_age[$key] = $person['age'];
}

array_multisort($sort_by_age, SORT_ASC, $people);


После выполнения этого кода массив $people будет отсортирован по возрасту в порядке возрастания.

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

от rodger.botsford , 4 месяца назад

@vladimir 

Если требуется сортировать многомерный массив по нескольким полям, можно добавить дополнительные критерии сортировки в массив $sort_by_age:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16


$people = array( array('name' => 'John', 'age' => 25), array('name' => 'Jane', 'age' => 30), array('name' => 'Jim', 'age' => 20) );


$sort_by_age = array(); $sort_by_name = array();


foreach ($people as $key => $person) { $sort_by_age[$key] = $person['age']; $sort_by_name[$key] = $person['name']; }


array_multisort($sort_by_age, SORT_ASC, $sort_by_name, SORT_ASC, $people);


После выполнения этого кода массив $people будет отсортирован по возрасту в порядке возрастания, а в случае равных значений возраста - по имени в порядке возрастания.