PHP array multisort是一個強大的函數(shù),它可以將多個數(shù)組按照指定規(guī)則排序。在實際開發(fā)中,我們經(jīng)常需要對多個數(shù)組進行排序,比如按照價格排序,按照銷量排序等等。PHP array multisort就可以幫助我們輕松實現(xiàn)這些需求。
下面是一個簡單的例子,假設我們有一個數(shù)組$prices和$names,分別表示商品的價格和名稱,我們想要按照價格從小到大的順序排序:
$prices = array(20, 15, 25, 30); $names = array("shirt", "shoes", "hat", "pants"); array_multisort($prices, $names); print_r($names);
我們首先定義了$prices和$names兩個數(shù)組,分別表示商品的價格和名稱。然后使用array_multisort函數(shù)對這兩個數(shù)組進行排序,并將排序結果保存到$names數(shù)組中。最后使用print_r函數(shù)輸出$names數(shù)組。
運行上面的代碼,輸出結果為:
Array ( [0] =>shoes [1] =>shirt [2] =>hat [3] =>pants )
可以看到,$names數(shù)組已經(jīng)按照價格從小到大的順序排序。那么,這個函數(shù)是如何實現(xiàn)的呢?
array_multisort函數(shù)的原理是將指定的數(shù)組按照指定的排序規(guī)則排序。可以為多個數(shù)組指定排序規(guī)則,每個規(guī)則可以由一個或多個排序參數(shù)組成。
下面是一個更復雜的例子,我們有一個學生成績數(shù)組$score,該數(shù)組包含了每個學生的姓名、語文成績和數(shù)學成績,我們希望將這個數(shù)組按照總分從高到低的順序排序:
$score = array( array('name' =>'張三', 'chinese' =>90, 'math' =>80), array('name' =>'李四', 'chinese' =>80, 'math' =>90), array('name' =>'王五', 'chinese' =>85, 'math' =>85), array('name' =>'趙六', 'chinese' =>95, 'math' =>70) ); foreach ($score as $key =>$row) { $total_score[$key] = $row['chinese'] + $row['math']; } array_multisort($total_score, SORT_DESC, $score); print_r($score);
在上面的例子中,我們使用了一個foreach循環(huán)遍歷$score數(shù)組,并根據(jù)每個學生的語文成績和數(shù)學成績計算了總分,并將總分保存在$total_score數(shù)組中。
然后,我們調用了array_multisort函數(shù),并指定了需要排序的數(shù)組。$total_score數(shù)組用來指定排序規(guī)則,SORT_DESC表示按照降序排序,$score數(shù)組則是待排序的數(shù)組。這樣,$score數(shù)組會按照總分從高到低的順序排序。
最后,我們使用print_r函數(shù)輸出了排完序的$score數(shù)組。輸出結果為:
Array ( [0] =>Array ( [name] =>趙六 [chinese] =>95 [math] =>70 ) [1] =>Array ( [name] =>張三 [chinese] =>90 [math] =>80 ) [2] =>Array ( [name] =>王五 [chinese] =>85 [math] =>85 ) [3] =>Array ( [name] =>李四 [chinese] =>80 [math] =>90 ) )
可以看到,$score數(shù)組已經(jīng)按照總分從高到低的順序排序。
除了按照總分排序之外,我們還可以按照其他規(guī)則排序。比如,按照數(shù)學成績從高到低排序:
foreach ($score as $key =>$row) { $math_score[$key] = $row['math']; } array_multisort($math_score, SORT_DESC, $score); print_r($score);
運行上面的代碼,輸出結果為:
Array ( [0] =>Array ( [name] =>李四 [chinese] =>80 [math] =>90 ) [1] =>Array ( [name] =>張三 [chinese] =>90 [math] =>80 ) [2] =>Array ( [name] =>王五 [chinese] =>85 [math] =>85 ) [3] =>Array ( [name] =>趙六 [chinese] =>95 [math] =>70 ) )
可以看到,$score數(shù)組已經(jīng)按照數(shù)學成績從高到低的順序排序。
綜上所述,PHP array multisort函數(shù)是一個非常實用的函數(shù),它可以幫助我們輕松實現(xiàn)對多個數(shù)組的排序。在實際開發(fā)中,我們可以根據(jù)具體需求靈活使用該函數(shù),在排序過程中指定排序規(guī)則和排序方式,從而滿足不同的排序需求。