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

首頁 > 語言 > PHP > 正文

PHP多維數組排序實現程序代碼

2024-09-04 11:46:27
字體:
來源:轉載
供稿:網友

在php中對數組排序包括一維數組排序與多維數組排序,下面我來詳細介紹利用php數組排序函數與自定函數來實現數據排序的具體方法.

單數組排序,sort函數升序排序:

bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )

PHP實例代碼如下:

  1. <?php 
  2. $fruits = array("lemon""orange""banana""apple"); 
  3. sort($fruits); 
  4. var_dump($fruits); 
  5. ?> 

-rsort降序排列--,代碼如下:

  1. <?php 
  2. $fruits = array("lemon""orange""banana""apple"); 
  3. rsort($fruits);var_dump($fruits); 
  4. ?> 

比如有個多維數組,代碼如下:

  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. }//開源軟件:Vevb.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().

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 许昌市| 桦甸市| 临江市| 吉水县| 江永县| 三门峡市| 临高县| 宁陵县| 酒泉市| 怀宁县| 广元市| 延津县| 舞钢市| 鲁山县| 古交市| 武乡县| 杂多县| 昌宁县| 西乌珠穆沁旗| 伽师县| 慈利县| 乌拉特后旗| 郴州市| 蓝田县| 页游| 白城市| 文登市| 宝山区| 达拉特旗| 全南县| 夏邑县| 仙游县| 徐州市| 漠河县| 澳门| 张家港市| 望城县| 安康市| 兴国县| 团风县| 扶余县|