在開發中,我們經常需要對資料進行排序,以便更好地呈現和使用。對於二維數組,排序可以依照某一個資料欄位來進行。本文將介紹如何使用PHP給二維數組進行排序。
一、使用sort()函數對二維陣列排序
sort()是PHP的內建函數,能夠依照升序對陣列中的值進行排序。當二維數組排序時,sort()函數預設會依照陣列的第一個欄位進行排序。例如,我們有一個二維陣列:
$arr = array( array('id'=>2,'name'=>'li', 'age'=>20), array('id'=>1,'name'=>'zhang', 'age'=>22), array('id'=>3,'name'=>'wang', 'age'=>18) );
我們可以使用sort()函數來依照id欄位進行排序:
sort($arr); print_r($arr);
輸出結果為:
Array ( [0] => Array ( [age] => 18 [id] => 3 [name] => wang ) [1] => Array ( [age] => 20 [id] => 2 [name] => li ) [2] => Array ( [age] => 22 [id] => 1 [name] => zhang ) )
可以看出,依照id字段進行排序後,數組中的元素依升序排列。
二、使用usort()函數對二維陣列排序
sort()函數只能依照陣列的第一個欄位排序,如果要依照其他欄位進行排序,就需要使用usort()函數。 usort()函數需要傳入一個自訂的回呼函數,用於指定排序的規則。例如,我們要依照age欄位進行排序:
function cmp($a, $b) { if ($a['age'] == $b['age']) { return 0; } return ($a['age'] <$ b['age']) ? -1 : 1; } usort($arr, "cmp"); print_r($arr);
輸出結果為:
Array ( [0] => Array ( [id] => 3 [name] => wang [age] => 18 ) [1] => Array ( [id] => 2 [name] => li [age] => 20 ) [2] => Array ( [id] => 1 [name] => zhang [age] => 22 ) )
可以看出,依照age欄位進行排序後,陣列中的元素會依照年齡升序排列。
三、使用array_multisort()函數對二維數組排序
array_multisort()函數是一個非常強大的排序函數,可以依照多個條件對二維數組進行排序。如果想按照多個欄位進行排序,可以使用array_multisort()函數。例如,我們要先依照age欄位排序,如果age相同,則依照id排序:
$ages = array(); $ids = array(); foreach ($arr as $key => $value) { $ages[$key] = $value['age']; $ids[$key] = $value['id']; } array_multisort($ages, SORT_ASC, $ids, SORT_ASC, $arr); print_r($arr);
輸出結果為:
Array ( [0] => Array ( [id] => 3 [name] => wang [age] => 18 ) [1] => Array ( [id] => 2 [name] => li [age] => 20 ) [2] => Array ( [id] => 1 [name] => zhang [age] => 22 ) )
可以看出,依照age欄位和id欄位進行排序後,數組中的元素依年齡升序排列,age相同時依id進行升序排列。
總結:
本文介紹了三種方法來對二維陣列進行排序,分別是使用sort()函數、usort()函數和array_multisort()函數。在開發中,選擇哪一種方式取決於具體的需求。希望本文對大家有幫助。
以上是php怎麼給二維數組排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!