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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@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 , год назад

@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 будет отсортирован по возрасту в порядке возрастания, а в случае равных значений возраста - по имени в порядке возрастания.