PHP二維陣列排序
陣列排序在計算過程中的使用頻率相當頻繁
面對一維的陣列排序可以使用 sort($arrayA) 來解決許多問題
但是二維陣列的排序呢 ?
下面簡單說明如何替二維陣列做排序
首先建立一個簡單的二維陣列
//下面就是以學生成績來組成的二維陣列
$score_array = array(
0 => array( 'id' => 1, 'number' => 3 , 'english' => 80 , 'chinese' => 88 , 'math' => 90),
1 => array( 'id' => 2, 'number' => 2 , 'english' => 68 , 'chinese' => 81 , 'math' => 77),
2 => array( 'id' => 3, 'number' => 5 , 'english' => 77 , 'chinese' => 56 , 'math' => 95),
3 => array( 'id' => 4, 'number' => 4 , 'english' => 53 , 'chinese' => 88 , 'math' => 80),
4 => array( 'id' => 5, 'number' => 1 , 'english' => 92 , 'chinese' => 92 , 'math' => 70)) ;
//接著建立一個排序的函數
function score_sort($a, $b){
//下面的chinese是要排序的陣列索引,可以替換成你要排序的東西(例如:english或是math)
if($a['chinese'] == $b['chinese']) return 0;
return ($a['chinese'] > $b['chinese']) ? 1 : -1;
}
//最後使用usort來做排序
// usort(要排序的陣列,使用的函數)
usort($score_array, 'score_sort');
//列印驗證就可以了
print_r($score_array);
上述就是一個二維陣列排序的簡單例子
二維陣列排序在實際應用上特別要小心的是效能問題
因為使用了排序會佔用很多效能
所以使用時必須檢查一下
陣列是不是已經先做過優化,把不需要的參數都先拿掉再做排序,效果比較好
(碎碎念:之前就曾發生運算的時候,造成整個網頁都掛掉,害我網站得重新啟動才復原 >"<)
如果覺得對你有幫助的話. 麻煩幫小弟按個讚哦~
參考來源: