Рубрики
Uncategorized

Пример алгоритма сортировки двумерного массива на основе заданных полей в PHP

Автор оригинала: David Wong.

В этой статье приведен пример, иллюстрирующий, как реализовать алгоритм сортировки двумерных массивов в соответствии с указанными полями в PHP. Чтобы поделиться с вами для вашей справки, следующим образом:

Возникшие проблемы: Используйте два массива в PHP array_merge() После объединения функции вы хотите отсортировать новый массив в соответствии с полем “после времени” в обоих массивах

условия урегулирования: Сверившись с официальным руководством, мы знаем, что существуют array_multisort() Эта функция может сортировать несколько массивов или многомерных массивов и возвращать отсортированный массив. Имя строкового ключа будет зарезервировано, но имя числового ключа будет повторно проиндексировано, начиная с 0 и увеличиваясь на 1.

Эта функция инкапсулирована ниже для удобства вызова:

/**
 *Two dimensional array is sorted according to the specified field
 *@ params array $array array array array to be sorted
 *@ params string $field sorted field
 *@ params string $sort sort sort order flag sort ﹣ desc descending; sort ﹣ ASC ascending
 */
function arraySequence($array, $field, $sort = 'SORT_DESC') {
 $arrSort = array();
 foreach ($array as $uniqid => $row) {
  foreach ($row as $key => $value) {
   $arrSort[$key][$uniqid] = $value;
  }
 }
 array_multisort($arrSort[$field], constant($sort), $array);
 return $array;
}
// test:
$arrDemo = array(
array('name'=>'Jack','age'=>'22'),
array('name'=>'Tom','age'=>'24'),
array('name'=>'Green','age'=>'21'),
array('name'=>'Ben','age'=>'23'),);
$arrDemo = arraySequence($arrDemo,'age');
print_r($arrDemo);

Результат операции:

Массив ( [0] => Массив ( [имя] = > Том [возраст] => 24 )

[1] => Массив ( [имя] => Бен [возраст] => 23 )

[2] => Массив ( [имя] => Джек [возраст] => 22 )

[3] => Массив ( [имя] = > Зеленый [возраст] => 21 )

)

Недавно добавлено: Сортировка по указанным нескольким полям

/**
 *The two-dimensional array is sorted according to the specified multiple fields
 *
 *Call example: sortarrbymanyfield ($arr, 'ID', sort uuasc, 'age', sort uudesc);
 */
function sortArrByManyField(){
 $args = func_get_args();
 if(empty($args)){
  return null;
 }
 $arr = array_shift($args);
 if(!is_array($arr)){
  Throw new exception ("the first argument should be an array");
 }
 foreach($args as $key => $field){
  if(is_string($field)){
   $temp = array();
   foreach($arr as $index=> $val){
    $temp[$index] = $val[$field];
   }
   $args[$key] = $temp;
  }
 }
 $args [] = & $arr; // reference value
 call_user_func_array('array_multisort',$args);
 return array_pop($args);
}
// test:
$arrDemo = array(
array('name'=>'Jack','age'=>'22'),
array('name'=>'Tom','age'=>'24'),
array('name'=>'Green','age'=>'21'),
array('name'=>'Ben','age'=>'23'),);
$arrDemo = sortArrByManyField($arrDemo,'age');
print_r($arrDemo);

Результат операции:

Массив ( [0] => Массив ( [имя] => Зеленый [возраст] => 21 )

[1] => Массив ( [имя] => Джек [возраст] => 22 )

[2] => Массив ( [имя] = > Бен [возраст] => 23 )

[3] => Массив ( [имя] => Том [возраст] => 24 )

)

PS: Здесь мы рекомендуем демонстрационный инструмент для сортировки для вашей справки:

Онлайн-демонстрация анимации вставка/выбор/пузырение/слияние/Холм/инструмент для обработки алгоритма быстрой сортировки: http://tools.jb51.net/aideddesign/paixu_ys

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

Я надеюсь, что эта статья будет полезна для программирования на PHP.

Оригинал: “https://developpaper.com/an-example-of-sorting-algorithm-for-two-dimensional-array-based-on-specified-fields-in-php/”