当前位置:首页 > PHP教程 > php数组 > 列表

PHP多维数组排序array详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-20 11:31:46 浏览: 评论:0 

这篇文章主要为大家详细介绍了PHP多维数组排序array的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

PHP数组Array按字段排序

  1. /** 
  2.  * Sort array by filed and type, common utility method. 
  3.  * @param array $data 
  4.  * @param string $sort_filed 
  5.  * @param string $sort_type SORT_ASC or SORT_DESC 
  6.  */ 
  7. public function sortByOneField($data$filed$type
  8.   if (count($data) <= 0) { 
  9.     return $data
  10.   } 
  11.   foreach ($data as $key => $value) { 
  12.     $temp[$key] = $value[$filed]; 
  13.   } 
  14.   array_multisort($temp$type$data); 
  15.   return $data

PHP数组Array按二维排序,先按第一个字段排序,再按第二个字段排序

  1. /** 
  2.  * Sort array by filed and type, common utility method. 
  3.  * @param array $array 
  4.  * @param string $filed1 
  5.  * @param string $type1 SORT_ASC or SORT_DESC 
  6.  * @param string $filed2 
  7.  * @param string $type2 SORT_ASC or SORT_DESC 
  8.  */ 
  9. public function sortByTwoFiled($data$filed1$type1$filed2$type2
  10.   if (count($data) <= 0) { 
  11.     return $data
  12.   } 
  13.   foreach ($data as $key => $value) { 
  14.     $temp_array1[$key] = $value[$filed1]; 
  15.     $temp_array2[$key] = $value[$filed2]; 
  16.   } 
  17.   array_multisort($temp_array1$type1$temp_array2$type2$data); 
  18.   return $users

sortMultiArray()最多支持3维数组排序,当然可以扩充的,自定义方法重载实现对多维数字的排序,这里的多维是说数据的多个字段。

使用方法:

1. sortMultiArray($data, [‘score' => SORT_DESC])

2. sortMultiArray($data, [‘score' => SORT_DESC, ‘count' => SORT_ASC])

3. sortMultiArray($data, [‘score' => SORT_DESC, ‘count' => SORT_ASC, ‘name' => SORT_ASC])

  1. /** 
  2.    * Sort multi array by filed and type. 
  3.    * @param data $array 
  4.    * @param condition $array 
  5.    */ 
  6.   public function sortMultiArray(&$data$condition
  7.   { 
  8.     if (count($data) <= 0 || emptyempty($condition)) { 
  9.       return $data
  10.     } 
  11.     $dimension = count($condition); 
  12.     $fileds = array_keys($condition); 
  13.     $types = array_values($condition); 
  14.     switch ($dimension) { 
  15.       case 1: 
  16.         $data = $this->sort1Dimension($data$fileds[0], $types[0]); 
  17.         break
  18.       case 2: 
  19.         $data = $this->sort2Dimension($data$fileds[0], $types[0], $fileds[1], $types[1]); 
  20.         break
  21.       default
  22.         $data = $this->sort3Dimension($data$fileds[0], $types[0], $fileds[1], $types[1], $fileds[2], $types[2]); 
  23.         break
  24.     } 
  25.     return $data
  26.   } 
  27.  
  28.   public function sort1Dimension(&$data$filed$type
  29.   { 
  30.     if (count($data) <= 0) { 
  31.       return $data
  32.     } 
  33.     foreach ($data as $key => $value) { 
  34.       $temp[$key] = $value[$filed]; 
  35.     } 
  36.     array_multisort($temp$type$data); 
  37.     return $data
  38.   } 
  39.  
  40.   public function sort2Dimension(&$data$filed1$type1$filed2$type2
  41.   { 
  42.     if (count($data) <= 0) { 
  43.       return $data
  44.     } 
  45.     foreach ($data as $key => $value) { 
  46.       $sort_filed1[$key] = $value[$filed1]; 
  47.       $sort_filed2[$key] = $value[$filed2]; 
  48.     } 
  49.     array_multisort($sort_filed1$type1$sort_filed2$type2$data); 
  50.     return $data
  51.   } 
  52.  
  53.   public function sort3Dimension(&$data$filed1$type1$filed2$type2$filed3$type3
  54.   { 
  55.     if (count($data) <= 0) { 
  56.       return $data
  57.     } 
  58.     foreach ($data as $key => $value) { 
  59.       $sort_filed1[$key] = $value[$filed1]; 
  60.       $sort_filed2[$key] = $value[$filed2]; 
  61.       $sort_filed3[$key] = $value[$filed3]; 
  62.     } 
  63.     array_multisort($sort_filed1$type1$sort_filed2$type2$sort_filed3$type3$data); 
  64.     return $data
  65.   }

Tags: PHP多维数组排序 array

分享到: