Home > Backend Development > PHP Tutorial > Detailed explanation of PHP multidimensional array sorting array

Detailed explanation of PHP multidimensional array sorting array

jacklove
Release: 2023-03-27 15:00:02
Original
1957 people have browsed it

This article explains the detailed explanation of PHP multi-dimensional array sorting array.

PHP array Array is sorted by fields

/** 
* Sort array by filed and type, common utility method. 
* @param array $data
* @param string $sort_filed
* @param string $sort_type SORT_ASC or SORT_DESC 
*/
public function sortByOneField($data, $filed, $type) 
{ 
if (count($data) <= 0) { 
return $data;
} 
foreach ($data as $key => $value) { 
$temp[$key] = $value[$filed];
 
}
 
array_multisort($temp, $type, $data);
 
return $data;
 
}
   
PHP数组Array按二维排序,先按第一个字段排序,再按第二个字段排序
 
* Sort array by filed and type, common utility method.
 
* @param array $array
 
* @param string $filed1
 
* @param string $type1 SORT_ASC or SORT_DESC
 
* @param string $filed2
 
* @param string $type2 SORT_ASC or SORT_DESC
 
*/
 
public function sortByTwoFiled($data, $filed1, $type1, $filed2, $type2)
 
{
 
if (count($data) <= 0) {
 
return $data;
 
}
 
foreach ($data as $key => $value) {
 
$temp_array1[$key] = $value[$filed1];
 
$temp_array2[$key] = $value[$filed2];
 
}
 
array_multisort($temp_array1, $type1, $temp_array2, $type2, $data);
 
return $users;
 
}
Copy after login

sortMultiArray() supports up to 3-dimensional array sorting, and of course can be expanded. Custom method overloading implements multi-dimensional numbers Sorting, multidimensional here refers to multiple fields of data.

Usage:

1. sortMultiArray($data, [‘score&#39; => SORT_DESC])
2. sortMultiArray($data, [‘score&#39; => SORT_DESC, ‘count&#39; => SORT_ASC])
3. sortMultiArray($data, [‘score&#39; => SORT_DESC, ‘count&#39; => SORT_ASC, ‘name&#39; => SORT_ASC])
/**
 
* Sort multi array by filed and type.
 
* @param data $array
 
* @param condition $array
 
*/
 
public function sortMultiArray(&$data, $condition)
 
{
 
if (count($data) <= 0 || empty($condition)) {
 
return $data;
 
}
 
$dimension = count($condition);
 
$fileds = array_keys($condition);
 
$types = array_values($condition);
 
switch ($dimension) {
 
case 1:
 
$data = $this->sort1Dimension($data, $fileds[0], $types[0]);
 
break;
 
case 2:
 
$data = $this->sort2Dimension($data, $fileds[0], $types[0], $fileds[1], $types[1]);
 
break;
 
default:
 
$data = $this->sort3Dimension($data, $fileds[0], $types[0], $fileds[1], $types[1], $fileds[2], $types[2]);
 
break;
 
}
 
return $data;
 
}
 
public function sort1Dimension(&$data, $filed, $type)
 
{
 
if (count($data) <= 0) {
 
return $data;
 
}
 
foreach ($data as $key => $value) {
 
$temp[$key] = $value[$filed];
 
}
 
array_multisort($temp, $type, $data);
 
return $data;
 
}
 
public function sort2Dimension(&$data, $filed1, $type1, $filed2, $type2)
 
{
 
if (count($data) <= 0) {
 
return $data;
 
}
 
foreach ($data as $key => $value) {
 
$sort_filed1[$key] = $value[$filed1];
 
$sort_filed2[$key] = $value[$filed2];
 
}
 
array_multisort($sort_filed1, $type1, $sort_filed2, $type2, $data);
 
return $data;
 
}
 
public function sort3Dimension(&$data, $filed1, $type1, $filed2, $type2, $filed3, $type3)
 
{
 
if (count($data) <= 0) {
 
return $data;
 
}
 
foreach ($data as $key => $value) {
 
$sort_filed1[$key] = $value[$filed1];
 
$sort_filed2[$key] = $value[$filed2];
 
$sort_filed3[$key] = $value[$filed3];
 
}
 
array_multisort($sort_filed1, $type1, $sort_filed2, $type2, $sort_filed3, $type3, $data);
 
return $data;
 
}
Copy after login

This article explains the detailed explanation of PHP multi-dimensional array sorting array. For more related content, please pay attention to the PHP Chinese website.

Related recommendations:

PHP Implementation of Bucket Sorting Algorithm

##Detailed Explanation of Merge Sorting of PHP Sorting Algorithm Series

thinkPHP5 framework database coherent operation: cache() usage details

The above is the detailed content of Detailed explanation of PHP multidimensional array sorting array. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template