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);

 

上述就是一個二維陣列排序的簡單例子

 

二維陣列排序在實際應用上特別要小心的是效能問題

因為使用了排序會佔用很多效能

所以使用時必須檢查一下

陣列是不是已經先做過優化,把不需要的參數都先拿掉再做排序,效果比較好

(碎碎念:之前就曾發生運算的時候,造成整個網頁都掛掉,害我網站得重新啟動才復原 >"<)

 

 

 如果覺得對你有幫助的話. 麻煩幫小弟按個讚哦~

 

 

參考來源:

 

PHP 如何排序二維陣列

 

PHP usort() Function

 

 

arrow
arrow

    newaurora 發表在 痞客邦 留言(0) 人氣()