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) 

需要对二维数组中的 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. }//开源软件:phpfensi.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().

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