当前位置:首页 > 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

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. // 将数据根据 volume 降序排列,根据 edition 升序排列 
  14. // 把 $data 作为最后一个参数,以通用键排序 
  15. array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data); 
  16. print_r($data); 

执行后打印结果如下:

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

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

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

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

Tags: php数组键排序

分享到: