Пользовательская сортировка многомерных массивов
Сортировка многомерных массивов может быть распространенной задачей в программировании. В этой статье показано, как отсортировать такой массив на основе определенного ключа с помощью функции PHP usort().
Понимание задачи
Рассмотрим следующий многомерный массив, где каждый элемент представляет запись:
Array (
[0] => Array
(
[iid] => 1
[invitee] => 174
[nid] => 324343
[showtime] => 2010-05-09 15:15:00
[location] => 13
[status] => 1
[created] => 2010-05-09 15:05:00
[updated] => 2010-05-09 16:24:00
)
[1] => Array
(
[iid] => 1
[invitee] => 220
[nid] => 21232
[showtime] => 2010-05-09 15:15:00
[location] => 12
[status] => 0
[created] => 2010-05-10 18:11:00
[updated] => 2010-05-10 18:11:00
))
Сортировка по ключу
Чтобы отсортировать этот массив по ключу «статус», нам нужно определить функцию сравнения, которая определяет порядок элементов.
function cmp($a, $b) {
if ($a['status'] == $b['status']) {
return 0;
}
return ($a['status'] Эта функция сравнивает значения «статуса» двух элементов. Если значения равны, он возвращает 0. Если первый элемент имеет более низкое значение «статуса», чем второй, он возвращает -1. В противном случае возвращается 1.
Использование usort()
Теперь мы можем использовать функцию usort() для сортировки массива с помощью нашей функции сравнения:
usort($array, "cmp");
Это позволит отсортировать массив в порядке возрастания на основе ключа "статус". Элементы измененного массива будут переупорядочены соответствующим образом.
Настройка сравнения
Функция сравнения может быть настроена для сортировки массива по любому ключу. Просто измените функцию, чтобы сравнить нужные значения ключей. Это обеспечивает гибкость при сортировке многомерных массивов по различным критериям.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3