«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > PHP многомерный метод сортировки массива по значению Subarray

PHP многомерный метод сортировки массива по значению Subarray

Опубликовано в 2025-04-30
Просматривать:159

How Can I Sort a Multidimensional PHP Array by a Subarray's Value?

сортировка массива по значению Subarray в PHP

Заказа структуры данных - это общая задача программирования, а массивы часто используются для хранения и управления коллекциями информации. В PHP массивы могут содержать вложенные структуры, включая массивы в качестве значений. Сортировка многомерных массивов может быть полезна по различным причинам, таким как организация данных или извлечение конкретных элементов.

]

Задача:

рассмотрим следующую структуру массива:

$array = [
    [
        'configuration_id' => 10,
        'id' => 1,
        'optionNumber' => 3,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 9,
        'id' => 1,
        'optionNumber' => 2,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 8,
        'id' => 1,
        'optionNumber' => 1,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
];
, [ 'configuration_id' => 9, 'id' => 1, 'optionnumber' => 2, 'optionActive' => 1, 'Lastupdated' => '2010-03-17 15:44:12' ], [ 'configuration_id' => 8, 'id' => 1, 'optionnumber' => 1, 'optionActive' => 1, 'Lastupdated' => '2010-03-17 15:44:12' ], ]; [ 'configuration_id' => 8, 'id' => 1, 'optionnumber' => 1, 'optionActive' => 1, 'Lastupdated' => '2010-03-17 15:44:12' ], [ 'configuration_id' => 9, 'id' => 1, 'optionnumber' => 2, 'optionActive' => 1, 'Lastupdated' => '2010-03-17 15:44:12' ], [ 'configuration_id' => 10, 'id' => 1, 'optionnumber' => 3, 'optionActive' => 1, 'Lastupdated' => '2010-03-17 15:44:12' ], ]; USORT принимает два аргумента: массив, который будет отсортирован, и функция сравнения, которая определяет упорядочение элементов. Функция сравнения должна вернуть отрицательное значение, если первый элемент должен представить до второго, ноль, если они эквивалентны, и положительное значение, если первый элемент должен появиться после второго. вернуть $ a ['optionnumber'] - $ b ['optionnumber']; }

] Эта функция вычитает значение «опционное номер» первого массива из второго, что приводит к отрицательному значению, если первый элемент должен быть до второго, нулевое значение, если они равны, и положительное значение, если первый элемент должен прийти после второго. Аргумент:
$sortedArray = [
    [
        'configuration_id' => 8,
        'id' => 1,
        'optionNumber' => 1,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 9,
        'id' => 1,
        'optionNumber' => 2,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
    [
        'configuration_id' => 10,
        'id' => 1,
        'optionNumber' => 3,
        'optionActive' => 1,
        'lastUpdated' => '2010-03-17 15:44:12'
    ],
];
usort ($ array, 'cmp_by_optionnumber');

это сортирует массив на месте, изменяя исходную переменную $ массива, чтобы отразить отсортированный порядок. Полученная переменная $ Array будет идентична примеру $ sortedArray, приведенным ранее.

]

альтернативный синтаксис:

в версиях PHP 5.3, а позже анонимная функция может использоваться вместо именованной функции:
function cmp_by_optionNumber($a, $b) {
  return $a['optionNumber'] - $b['optionNumber'];
}

php 7.0 и выше:

usort($array, 'cmp_by_optionNumber');

usort ($ array, function ($ a, $ b) { возврат $ a ['optionnumber'] & lt; = & gt; $ b ['optionnumber']; });

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3