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

首頁 > 語言 > PHP > 正文

php 二維數組排序實現程序

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

在php中對二維數組排序我們可以直接使用array_multisort()函數即可實現,同時我也收藏了一些自定對二維數組排序代碼大家可參考.

先來看array_multisort()函數,代碼如下:

  1. <?php 
  2. $ar = array
  3.        array("10", 11, 100, 100, "a"), 
  4.        array( 1, 2, "2", 3, 1) 
  5.      ); 
  6. array_multisort($ar[0], SORT_ASC, SORT_STRING, 
  7.                $ar[1], SORT_NUMERIC, SORT_DESC); 
  8. var_dump($ar); 
  9. ?> 

本例中在排序后,第一個數組將變成 "10",100,100,11,"a"(被當作字符串以升序排列),第二個數組將包含 1, 3, "2", 2, 1(被當作數字以降序排列),代碼如下:

  1. array(2) { 
  2. [0]=> array(5) { 
  3.     [0]=> string(2) "10" 
  4.     [1]=> int(100) 
  5.     [2]=> int(100) 
  6.     [3]=> int(11) 
  7.     [4]=> string(1) "a" 
  8. [1]=> array(5) { 
  9.     [0]=> int(1) 
  10.     [1]=> int(3) 
  11.     [2]=> string(1) "2" 
  12.     [3]=> int(2) 
  13.     [4]=> int(1) 

上面的用現成的函數感覺不是很方便,下面我來推薦一個用戶自定義的函數,代碼如下:

  1. function array_sort($arr,$keys,$type='asc'){  
  2.  $keysvalue = $new_array = array(); 
  3.  foreach ($arr as $k=>$v){ 
  4.   $keysvalue[$k] = $v[$keys]; 
  5.  } 
  6.  if($type == 'asc'){ 
  7.   asort($keysvalue); 
  8.  }else
  9.   arsort($keysvalue); 
  10.  } 
  11.  reset($keysvalue); 
  12.  foreach ($keysvalue as $k=>$v){ 
  13.   $new_array[$k] = $arr[$k]; 
  14.  } 
  15.  return $new_array;  

測試(它可以對二維數組按照指定的鍵值進行排序,也可以指定升序或降序排序法(默認為升序),用法示例:

  1. $array = array
  2.  array('name'=>'手機','brand'=>'諾基亞','price'=>1050), 
  3.  array('name'=>'筆記本電腦','brand'=>'lenovo','price'=>4300), 
  4.  array('name'=>'剃須刀','brand'=>'飛利浦','price'=>3100), 
  5.  array('name'=>'跑步機','brand'=>'三和松石','price'=>4900), 
  6.  array('name'=>'手表','brand'=>'卡西歐','price'=>960), 
  7.  array('name'=>'液晶電視','brand'=>'索尼','price'=>6299), 
  8.  array('name'=>'激光打印機','brand'=>'惠普','price'=>1200) 
  9. ); 
  10. $ShoppingList = array_sort($array,'price'); 
  11. print_r($ShoppingList); 

冒泡法,代碼如下:

  1. function arraysort($data$order = 'asc') { 
  2. //asc升序 desc降序 
  3. $temp = array (); 
  4. $count = count ( $data ); 
  5. if ($count <= 0) 
  6. return false; //傳入的數據不正確 
  7. if ($order == 'asc') { 
  8. for($i = 0; $i < $count$i ++) { 
  9. for($j = $count - 1; $j > $i$j --) { 
  10. if ($data [$j] < $data [$j - 1]) { 
  11. //交換兩個數據的位置 
  12. $temp = $data [$j]; 
  13. $data [$j] = $data [$j - 1]; 
  14. $data [$j - 1] = $temp
  15. else { 
  16. for($i = 0; $i < $count$i ++) { 
  17. for($j = $count - 1; $j > $i$j --) { 
  18. if ($data [$j] > $data [$j - 1]) { 
  19. $temp = $data [$j]; 
  20. $data [$j] = $data [$j - 1]; 
  21. $data [$j - 1] = $temp
  22.  
  23. return $data
  24.  
  25. $data = array (7, 5, 3, 8, 9, 1, 5, 3, 1, 24, 3, 87, 0, 33, 1, 12, 34, 54, 66, 32 ); 
  26. var_dump ( arraysort ( $data ) ); //升序 
  27. echo ('<br>'); 
  28. var_dump ( arraysort ( $data ,'desc') );//降序 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洛扎县| 双峰县| 库尔勒市| 灵寿县| 乐业县| 内丘县| 台东市| 广西| 阳西县| 蒲江县| 华亭县| 长宁县| 富川| 巴彦县| 电白县| 甘孜县| 东台市| 黄山市| 北票市| 榆中县| 蒲江县| 石楼县| 天全县| 南投县| 岱山县| 洛南县| 上林县| 东丰县| 天长市| 阿勒泰市| 栖霞市| 万山特区| 绥棱县| 金山区| 长治县| 托里县| 吉安县| 威信县| 鲜城| 汶上县| 进贤县|