php专区

 首页 > php专区 > PHP基础 > 数组 > PHP多维数组排序实现程序代码 - php数组

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

分享到:
【字体:大 中 小】
导读:
          在php中对数组排序包括一维数组排序与多维数组排序,下面我来详细介绍利用php数组排序函数与自定函数来实现数据排序的具体方法.单数组排序,sort函数升序排序:bool sort ( array $array [, i...

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

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

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

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

PHP实例代码如下:

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

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

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

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

  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) 
  6. ; 

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

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

自定义函数,代码如下:

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

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

分享到:
php 删除指定数组元素方法 - php数组
php 删除指定数组元素方法 下面提供两款高效的经典的删除数组元素的方法,我们可以指定删除那个就删除,有需要的同学可以参考一下,这里来自php.net.代码如下:   方法二,代码如下:
php中利用array_filter过滤数组为空值 - ...
php中利用array_filter过滤数组为空值 在我们开发过程中,判断数组为空时你会想到什么方法呢?首先想到的应该是empty函数,不过直接用empty函数判断为空是不对的,因为当这个值是多维数的时候,empty结果是有值的. 其实我们可以利用array_filter函数轻松去掉多维空值,而数组的下标没有改变,下面...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……