国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php一維二維數(shù)組鍵排序方法總結(jié)

2024-09-04 11:45:56
字體:
供稿:網(wǎng)友

在php中數(shù)組排序一直是一個老生常談的問題,下面我們來集中講一下關(guān)于在php中一維數(shù)組與二維數(shù)組排序的實現(xiàn)程序,各位同學(xué)可參考.

功能:對數(shù)組進(jìn)行重新排序.

說明:冒泡排序 (一維數(shù)組)(二維數(shù)組某個健排序)

兩兩比較待排序數(shù)據(jù)元素的大小,發(fā)現(xiàn)兩個數(shù)據(jù)元素的次序相反時即進(jìn)行交換,直到?jīng)]有反序的數(shù)據(jù)元素為止

設(shè)想被排序的數(shù)組R[1..N] 垂直豎立,將每個數(shù)據(jù)元素看作有重量的氣泡,從下往上掃描數(shù)組,凡掃描違反原則的輕氣泡,就使其向上”漂浮”,如此反復(fù)進(jìn)行,直到最后任何兩個氣都是輕者在上,重者在下為止,代碼如下:

  1. /** 
  2. * 冒泡排序 (一維數(shù)組)(二維數(shù)組某個健排序) 
  3. * 兩兩比較待排序數(shù)據(jù)元素的大小,發(fā)現(xiàn)兩個數(shù)據(jù)元素的次序相反時即進(jìn)行交換,直到?jīng)]有反序的數(shù)據(jù)元素為止 
  4.  * 設(shè)想被排序的數(shù)組R[1..N] 垂直豎立,將每個數(shù)據(jù)元素看作有重量的氣泡,從下往上掃描數(shù)組,凡掃描違反原則的輕氣泡,就使其向上"漂浮".如此反復(fù)進(jì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])){//二維數(shù)組健存在 
  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//一維數(shù)組 
  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() 對二位數(shù)組按照指定鍵值排序的使用方法,本例中定義了一個名為 $data 的二維數(shù)組,然后對它進(jìn)行排序,方法代碼如下:

  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. // 將數(shù)據(jù)根據(jù) volume 降序排列,根據(jù) edition 升序排列  
  15. // 把 $data 作為最后一個參數(shù),以通用鍵排序  
  16. array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);  
  17.    
  18. print_r($data); 
  19.  
  20. /* 
  21. 執(zhí)行后打印結(jié)果如下: 
  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. */ 

一維數(shù)組排序我們只要使用sort()就可以了,相對應(yīng)的 asort($arr); 函數(shù)是按鍵值排序,且維持原有的鍵值關(guān)系。

同樣原理,rsort(); arsort(); krsort(); 函數(shù)除了排序是按降序排列外,其它與sort(); rsort(); ksort(); 相同。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大连市| 南充市| 洪雅县| 定南县| 新邵县| 苏州市| 江北区| 勐海县| 桃园市| 松溪县| 浑源县| 米林县| 兴国县| 霍州市| 博罗县| 仁寿县| 博爱县| 铜陵市| 句容市| 石阡县| 余江县| 子洲县| 汤阴县| 基隆市| 潞西市| 莎车县| 吴江市| 辽源市| 乐至县| 扬州市| 珲春市| 徐闻县| 睢宁县| 卓尼县| 青龙| 柳江县| 宁夏| 故城县| 于都县| 永泰县| 抚宁县|