首页 > 语言 > PHP > 正文

PHP多维数组排序实现程序代码

2024-09-04 11:46:27
字体:
来源:转载
供稿:网友

在php中对数组排序包括一维数组排序与多维数组排序,下面我来详细介绍利用php数组排序函数与自定函数来实现数据排序的具体方法.

单数组排序,sort函数升序排序:

bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )

PHP实例代码如下:

  1. <?php 
  2. $fruits = array("lemon""orange""banana""apple"); 
  3. sort($fruits); 
  4. var_dump($fruits); 
  5. ?> 

-rsort降序排列--,代码如下:

  1. <?php 
  2. $fruits = array("lemon""orange""banana""apple"); 
  3. rsort($fruits);var_dump($fruits); 
  4. ?> 

比如有个多维数组,代码如下:

  1. $arr = array
  2.    'd' => array('id' => 5, 'name' => 1, 'age' => 7), 
  3.    'b' => array('id' => 2,'name' => 3,'age' => 4), 
  4.    'a' => array('id' => 8,'name' => 10,'age' => 5), 
  5.    'c' => array('id' => 1,'name' => 2,'age' => 2) 

需要对二维数组中的 age 项排序,需要用到PHP的内置函数 array_multisort(),array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序,代码如下:

  1. // 取得列的列表 
  2. foreach ($data as $key => $row) { 
  3.     $volume[$key]  = $row['volume']; 
  4.     $edition[$key] = $row['edition']; 
  5. // 将数据根据 volume 降序排列,根据 edition 升序排列 
  6. // 把 $data 作为最后一个参数,以通用键排序 
  7. array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); 
  8. 数据集合现在排好序了,结果如下: 
  9. volume | edition 
  10. -------+-------- 
  11.     98 |       2 
  12.     86 |       1 
  13.     86 |       6 
  14.     85 |       6 
  15.     67 |       2 
  16.     67 |       7 

自定义函数,代码如下:

  1. function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC) 
  2.     if(is_array($multi_array)) 
  3.     { 
  4.         foreach ($multi_array as $row_array
  5.         { 
  6.             if(is_array($row_array)) 
  7.             { 
  8.                 $key_array[] = $row_array[$sort_key]; 
  9.             } 
  10.             else 
  11.             { 
  12.                 return false; 
  13.             } 
  14.         } 
  15.     } 
  16.     else 
  17.     { 
  18.         return false; 
  19.     } 
  20.     array_multisort($key_array,$sort,$multi_array); 
  21.     return $multi_array
  22. }//开源软件:Vevb.com 
  23. //处理 
  24. print_r(multi_array_sort($arr,'age'));  
  25. //输出 
  26.  Array 
  27.     [c] => Array 
  28.         ( 
  29.             [id] => 1 
  30.             [name] => 2 
  31.             [age] => 2 
  32.         ) 
  33.  
  34.     [b] => Array 
  35.         ( 
  36.             [id] => 2 
  37.             [name] => 3 
  38.             [age] => 4 
  39.         ) 
  40.  
  41.     [a] => Array 
  42.         ( 
  43.             [id] => 8 
  44.             [name] => 10 
  45.             [age] => 5 
  46.         ) 
  47.  
  48.     [d] => Array 
  49.         ( 
  50.             [id] => 5 
  51.             [name] => 1 
  52.             [age] => 7 
  53.         ) 
  54.  

实际上真正在排序的时候还有很多方法可以使用,比如php的array数组自带的 arsort(),asort(),ksort(),krsort(),natsort(),natcasesort(),rsort(),usort(),array_multisort() 和 uksort().

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表