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.    
  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.    
  18. print_r($data); 
  19.  
  20. /* 
  21. 执行后打印结果如下: 
  22. Array  
  23.  
  24.     [0] => Array  
  25.         (  
  26.             [volume] => 98  
  27.             [edition] => 2  
  28.         )  
  29.     [1] => Array  
  30.         (  
  31.             [volume] => 86  
  32.             [edition] => 1  
  33.         )  
  34.     [2] => Array  
  35.         (  
  36.             [volume] => 86  
  37.             [edition] => 6  
  38.            
  39.     [3] => Array  
  40.         (  
  41.             [volume] => 85  
  42.             [edition] => 6  
  43.         )  
  44.     [4] => Array  
  45.         (  
  46.             [volume] => 67  
  47.             [edition] => 2  
  48.         )  
  49.     [5] => Array  
  50.         (  
  51.             [volume] => 67  
  52.             [edition] => 7  
  53.         )  
  54. ) 
  55. */ 

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

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

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » php一维二维数组键排序方法总结

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡