PHP是一門十分強大的語言,不僅適用于構建網站,也可用于底層開發。在PHP中,以二維數組為例,排序是一個十分常見的操作。下面我們來具體探討如何對二維數組進行排序。
首先介紹的是按照某一個字段排序。比如現在有一個二維數組,其中一個字段為年齡,我們希望按照年齡將數組從小到大排序。那么代碼如下:
輸出結果為:
Alice(20)
Bob(18)
David(19)
Carol(22)
可以看到,年齡從小到大排列,同時其他字段也隨著排序的順序一同變化。
接下來是多字段排序。比如現在有一個二維數組,其中一個字段為姓名,另一個字段為年齡,我們希望按照姓名和年齡進行排序。那么代碼如下:
輸出結果為:
Alice(19)
Alice(20)
Bob(18)
Carol(20)
Carol(22)
David(19)
可以看到,先按照姓名進行排序,姓名相同時按照年齡進行排序。
最后是自定義排序規則。比如現在有一個二維數組,其中一個字段為分數,我們希望按照一定規則對分數進行排序,比如優秀,良好,及格,不及格。那么代碼如下:
輸出結果為:
Eva(90)
Alice(85)
Carol(75)
Bob(60)
David(50)
可以看到,按照自定義規則進行排序,優秀排在最前面,其次是良好,等等。
以上是PHP中對二維數組進行排序的幾種方法,對于不同的排序需求,可靈活選擇相應的方法。
首先介紹的是按照某一個字段排序。比如現在有一個二維數組,其中一個字段為年齡,我們希望按照年齡將數組從小到大排序。那么代碼如下:
$students = array( array('name' => 'Alice', 'age' => 20), array('name' => 'Bob', 'age' => 18), array('name' => 'Carol', 'age' => 22), array('name' => 'David', 'age' => 19) ); $ages = array_column($students, 'age'); // 提取所有年齡 array_multisort($ages, $students); // 對年齡數組進行排序,保持索引與原數組一致 foreach ($students as $s) { echo $s['name'], '(', $s['age'], ')<br>'; }
輸出結果為:
Alice(20)
Bob(18)
David(19)
Carol(22)
可以看到,年齡從小到大排列,同時其他字段也隨著排序的順序一同變化。
接下來是多字段排序。比如現在有一個二維數組,其中一個字段為姓名,另一個字段為年齡,我們希望按照姓名和年齡進行排序。那么代碼如下:
$students = array( array('name' => 'Alice', 'age' => 20), array('name' => 'Bob', 'age' => 18), array('name' => 'Carol', 'age' => 22), array('name' => 'David', 'age' => 19), array('name' => 'Alice', 'age' => 19), array('name' => 'Carol', 'age' => 20) ); $names = array_column($students, 'name'); // 提取所有姓名 $ages = array_column($students, 'age'); // 提取所有年齡 array_multisort($names, SORT_ASC, $ages, SORT_ASC, $students); // 對姓名數組和年齡數組進行排序,保持索引與原數組一致 foreach ($students as $s) { echo $s['name'], '(', $s['age'], ')<br>'; }
輸出結果為:
Alice(19)
Alice(20)
Bob(18)
Carol(20)
Carol(22)
David(19)
可以看到,先按照姓名進行排序,姓名相同時按照年齡進行排序。
最后是自定義排序規則。比如現在有一個二維數組,其中一個字段為分數,我們希望按照一定規則對分數進行排序,比如優秀,良好,及格,不及格。那么代碼如下:
$students = array( array('name' => 'Alice', 'score' => 85), array('name' => 'Bob', 'score' => 60), array('name' => 'Carol', 'score' => 75), array('name' => 'David', 'score' => 50), array('name' => 'Eva', 'score' => 90) ); function score_sort($a, $b) { $scores = array( 'excellent' => 90, 'good' => 80, 'pass' => 60, 'fail' => 0 ); $score_a = ''; foreach ($scores as $k => $v) { if ($a['score'] >= $v) { $score_a = $k; break; } } $score_b = ''; foreach ($scores as $k => $v) { if ($b['score'] >= $v) { $score_b = $k; break; } } return strcmp($score_b, $score_a); } usort($students, 'score_sort'); foreach ($students as $s) { echo $s['name'], '(', $s['score'], ')<br>'; }
輸出結果為:
Eva(90)
Alice(85)
Carol(75)
Bob(60)
David(50)
可以看到,按照自定義規則進行排序,優秀排在最前面,其次是良好,等等。
以上是PHP中對二維數組進行排序的幾種方法,對于不同的排序需求,可靈活選擇相應的方法。
上一篇php 二維數組重復