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

首頁 > 語言 > PHP > 正文

PHP二維數組排序問題詳解(數組鍵值排序)

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

根據某個鍵值對二維數組進行排序是個常見問題,這里總結一個函數,可同時對兩個鍵值分別排序,當然想要更多的話就自行解決吧.

但是如果需要排序的數組是一個二維數組,需要按照數組的鍵值排序,如下面這個二維數組,需要按照sort鍵名來排序,那么array_multisort() 就無法直接實現了.

實例一,代碼如下:

  1. $arr = array
  2. array
  3. 'sort' => 3, 
  4. 'a' => 'a'
  5. 'b' => 'b' 
  6. ), 
  7. array
  8. 'sort' => 5, 
  9. 'a' => 'a'
  10. 'b' => 'b' 
  11. ), 
  12. array
  13. 'sort' => 1, 
  14. 'a' => 'a'
  15. 'b' => 'b' 
  16. ); 

這樣array_multisort()不不能生效了,我們可以對函數進行升級一下,根據指定鍵值進行排序,代碼如下:

  1. function array_sort($arr,$key1,$sort1='asc',$key2='',$sort2='asc'){ 
  2.     if (!is_array($arr)){ 
  3.         return $arr
  4.     } 
  5.     foreach($arr AS $key => $row){ 
  6.         $temp[$key] = $row[$key1]; 
  7.     } 
  8.     $sort1 = $sort1 == 'asc' ? SORT_ASC : SORT_DESC; 
  9.     if(!$key2){ 
  10.         array_multisort($temp$sort1,$arr); 
  11.     } else { 
  12.         foreach($arr AS $key => $row){ 
  13.             $temp2[$key] = $row[$key2]; 
  14.         } 
  15.         $sort2 = $sort2 == 'asc' ? SORT_ASC : SORT_DESC; 
  16.         array_multisort($temp$sort1,$temp2,$sort2,$arr); 
  17.     } 
  18.     return $arr

實例二,代碼如下:

  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;  
  16. $array = array
  17.  array('name'=>'手機','brand'=>'諾基亞','price'=>1050), 
  18.  array('name'=>'筆記本電腦','brand'=>'lenovo','price'=>4300), 
  19.  array('name'=>'剃須刀','brand'=>'飛利浦','price'=>3100), 
  20.  array('name'=>'跑步機','brand'=>'三和松石','price'=>4900), 
  21.  array('name'=>'手表','brand'=>'卡西歐','price'=>960), 
  22.  array('name'=>'液晶電視','brand'=>'索尼','price'=>6299), 
  23.  array('name'=>'激光打印機','brand'=>'惠普','price'=>1200) 
  24. ); 
  25.  
  26. $ShoppingList = array_sort($array,'price'); 
  27. print_r($ShoppingList); 

面是對$array這個二維數組按照'price'從低到高的排序.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 叙永县| 东台市| 星座| 逊克县| 崇信县| 古丈县| 庆安县| 濮阳市| 泸水县| 奉节县| 惠东县| 衡山县| 怀宁县| 达孜县| 阳江市| 临沂市| 济阳县| 依兰县| 嘉定区| 专栏| 修武县| 定日县| 安达市| 宜川县| 肥城市| 任丘市| 淮滨县| 台山市| 昭通市| 英吉沙县| 长宁区| 阿克| 九龙城区| 大名县| 静宁县| 商城县| 常德市| 朔州市| 玉环县| 绍兴县| 西乌珠穆沁旗|