PHP實現對多維陣列按照某個鍵值排序的兩種解決方法
阿新 • • 發佈:2019-01-11
實現對多維陣列按照某個鍵值排序的兩種解決方法(array_multisort和array_sort):
第一種:array_multisort()函式對多個數組或多維陣列進行排序。
//對陣列$hotcat按照count鍵值大小降序進行排序; $hotcat =array( array('1501'=>array('catid'=>'1546','catname'=>'陣列排序 一級','count'=>'588')), array('1501'=>array('catid'=>'1546','catname'=>'陣列排序二級','count'=>'588')), array('1501'=>array('catid'=>'1546','catname'=>'陣列排序 三級','count'=>'588')) ); //提取列陣列; foreach ($hotcat as $key => $val) { $tmp[$key] = $row['username']; } array_multisort($tmp,SORT_DESC,$hotcat);此處對陣列進行降序排列;SORT_DESC按降序排列
第二種:
自定義方法array_sort()進行排序
<span style="font-size:12px;">//指定陣列以$keys鍵值排序 function array_sort($array,$keys,$type='asc'){ //$array為要排序的陣列,$keys為要用來排序的鍵名,$type預設為升序排序 $keysvalue = $new_array = array(); foreach ($array as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == 'asc'){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); foreach ($keysvalue as $k=>$v){ $new_array[$k] = $array[$k]; } return $new_array; } $hot_cat = array_sort($hot_cat,'count','desc'); //此處對陣列進行降序排列</span>
圖一:
圖二:
溫馨提醒:由上圖可知第一種方法有個弊端,如果你的陣列如果是字串鍵名將被保留,但是數字鍵將被重新索引,從0開始,並以1遞增。所以當陣列排序之後並且需要保留之前的所有鍵名的話,那就推薦使用第二種方法.