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

php一维二维数组键排序方法实例总结

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-26 11:39:28 浏览: 评论:0 

这篇文章主要介绍了php一维二维数组键排序方法,以实例形式总结了针对一维数组的冒泡排序与使用array_multisort()对二位数组按照指定键值排序等方法,具有不错的参考借鉴价值,需要的朋友可以参考下。

本文实例总结了php一维二维数组键排序方法。分享给大家供大家参考。具体方法如下:

在php中数组排序一直是一个老生常谈的问题,下面我们来集中讲一下关于在php中一维数组与二维数组排序的实现程序,相信对大家有一定的参考借鉴价值.

功能:对数组进行重新排序.

说明:冒泡排序 (一维数组)(二维数组某个健排序)

两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止

设想被排序的数组R[1..N] 垂直竖立,将每个数据元素看作有重量的气泡,从下往上扫描数组,凡扫描违反原则的轻气泡,就使其向上”漂浮”.如此反复进行.直到最后任何两个气都是轻者在上,重者在下为止.代码如下:

  1. /** 
  2.      * 冒泡排序 (一维数组)(二维数组某个健排序) 
  3.      * 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止 
  4.      * 设想被排序的数组R[1..N] 垂直竖立,将每个数据元素看作有重量的气泡,从下往上扫描数组,凡扫描违反原则的轻气泡,就使其向上"漂浮".如此反复进行. 
  5.      * 直到最后任何两个气都是轻者在上,重者在下为止. 
  6.  */ 
  7. function bubble_sort($array,$key=null) { 
  8.         $count = count($array); 
  9.         if($count < 0) { 
  10.             return false; 
  11.         } 
  12.         for($i = 0; $i < $count; $i++) { 
  13.             for($j = $count - 1; $j > $i; $j--) { 
  14.                 if($key && isset($array[$key])){//二维数组健存在 
  15.                     if($array[$j][$key] < $array[$j - 1][$key]) { 
  16.                         $tmp = $array[$j]; 
  17.                         $array[$j] = $array[$j - 1]; 
  18.                         $array[$j - 1] = $tmp; 
  19.                     } 
  20.                 }else{ //一维数组 
  21.                     if($array[$j] < $array[$j - 1]) { 
  22.                         $tmp = $array[$j]; 
  23.                         $array[$j] = $array[$j - 1]; 
  24.                         $array[$j - 1] = $tmp; 
  25.                     } 
  26.                 } 
  27.             } 
  28.         } 
  29.         return $array; 
  30. } 

array_multisort排序使用方法

array_multisort() 对二位数组按照指定键值排序的使用方法

本例中定义了一个名为 $data 的二维数组,然后对它进行排序,方法如下:

  1. $data[] = array('volume' => 67, 'edition' => 2); 
  2. $data[] = array('volume' => 86, 'edition' => 1); 
  3. $data[] = array('volume' => 85, 'edition' => 6); 
  4. $data[] = array('volume' => 98, 'edition' => 2); 
  5. $data[] = array('volume' => 86, 'edition' => 6); 
  6. $data[] = array('volume' => 67, 'edition' => 7); 
  7. //www.phpfensi.com 
  8. // 取得列的列表 
  9. foreach ($data as $key => $row) { 
  10.     $volume[$key]  = $row['volume']; 
  11.     $edition[$key] = $row['edition']; 
  12. } 
  13.  
  14. // 将数据根据 volume 降序排列,根据 edition 升序排列 
  15. // 把 $data 作为最后一个参数,以通用键排序 
  16. array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); 
  17. print_r($data); 

执行后打印结果如下:

  1. Array 
  2. ( 
  3.     [0] => Array 
  4.         ( 
  5.             [volume] => 98 
  6.             [edition] => 2 
  7.         ) 
  8.     [1] => Array 
  9.         ( 
  10.             [volume] => 86 
  11.             [edition] => 1 
  12.         ) 
  13.     [2] => Array 
  14.         ( 
  15.             [volume] => 86 
  16.             [edition] => 6 
  17.           
  18.     [3] => Array 
  19.         ( 
  20.             [volume] => 85 
  21.             [edition] => 6 
  22.         ) 
  23.     [4] => Array 
  24.         ( 
  25.             [volume] => 67 
  26.             [edition] => 2 
  27.         ) 
  28.     [5] => Array 
  29.         ( 
  30.             [volume] => 67 
  31.             [edition] => 7 
  32.         ) 
  33. ) 

一维数组排序我们只要使用sort()就可以了,相对应的 asort($arr); 函数,是按键值排序,且维持原有的键值关系。

同样原理,rsort(); arsort(); krsort(); 函数除了排序是按降序排列外,其它与sort(); rsort(); ksort(); 相同。

希望本文所述对大家的PHP程序设计有所帮助。

Tags: php数组键排序

分享到: