Автор оригинала: 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/”