一、array_multisort概述
在PHP中,多數情況下都需要排序,對數組進行排序是一件非常常見的事情。PHP提供了官方函數來幫助我們完成排序,其中array_multisort函數可以幫助我們對多維數組按照指定的規則進行排序。array_multisort可以使用任意數量的數組,對其進行排序並保持索引關聯。
二、array_multisort函數語法
function array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] ) : bool
array_multisort函數接收任何數量的數組,參數的第一個參數是待排序的數組,後面的參數用於指定其他數組或排序規則。該函數原地排序,即不返回新的數組。
三、array_multisort參數
參數array1和其他數組都是待排序的關聯數組或索引數組,下面是關於參數的更多內容:
- array1:待排序的第一個數組
- array1_sort_order:指定第一個數組的排序順序。可選值有:
SORT_ASC
、SORT_DESC
。 - array1_sort_flags:指定排序類型。可選值有:
SORT_REGULAR
、SORT_NUMERIC
、SORT_STRING
、SORT_LOCALE_STRING
、SORT_NATURAL
。 - array2, array3, …:其他待排序的數組
- array2_sort_order, array3_sort_order, …:其他待排序數組的排序順序
- array2_sort_flags, array3_sort_flags, …:其他待排序數組的排序類型。
四、array_multisort示例代碼
下面是一個使用array_multisort函數的例子,按照多個規則對數組進行排序:
$prices = array( array("product"=>"prod1", "price"=>10), array("product"=>"prod2", "price"=>20), array("product"=>"prod3", "price"=>30), array("product"=>"prod4", "price"=>40) ); foreach ($prices as $key => $row) { $product[$key] = $row['product']; $price[$key] = $row['price']; } array_multisort($product, SORT_ASC, SORT_STRING, $price, SORT_DESC, SORT_NUMERIC, $prices); print_r($prices);
運行代碼,將得到如下輸出結果:
Array ( [0] => Array ( [product] => prod1 [price] => 10 ) [1] => Array ( [product] => prod3 [price] => 30 ) [2] => Array ( [product] => prod2 [price] => 20 ) [3] => Array ( [product] => prod4 [price] => 40 ) )
五、array_multisort函數的相關注意點
- array_multisort是個原地排序函數。函數不返回新數組,而是在接收到的數組中直接進行排序並重建索引。
- 可以通過第二個參數來指定單個數組的排序方式,可以通過其它參數來擴展排序方式到另外的數組中去。
- 如果相應的多維數組參數中元素個數不相等,空缺的元素將按照默認排序方式SORT_ASC進行處理。
- array1數組中元素排序的優先順序比其它數組中同樣元素的排序優先順序高。
- array_multisort可適用於已經被排序的數組的排序。
六、結論
因為array_multisort函數能夠對多維數組按照指定規則排序,並且保持索引關聯,所以在程序編寫過程中,array_multisort函數的使用是非常重要的。希望讀者在按照指定規則排序時,可以順利的使用array_multisort函數。
原創文章,作者:GBVZQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/316728.html