非常有用的array_multisort多維陣列排序函式
阿新 • • 發佈:2019-02-08
array_multisort() 可以用來一次對多個數組進行排序或者根據某一維對多維陣列進行排序。排序時保留原有的鍵名關聯。
輸入陣列被當成一個表的列並以行來排序 - 這類似於 SQL 的 ORDER BY 子句的功能。第一個陣列是要排序的主要陣列。陣列中的行(值)比較為相同的話就按照下一個輸入陣列中相應值的大小來排序,依此類推。
本函式的引數結構有些不同尋常,但是非常靈活。第一個引數必須是一個數組。接下來的每個引數可以是陣列或者是下面列出的排序標誌。
排序順序標誌:
-
SORT_ASC - 按照上升順序排序
-
SORT_DESC - 按照下降順序排序
排序型別標誌:
-
SORT_REGULAR - 將專案按照通常方法比較
-
SORT_NUMERIC - 將專案按照數值比較
-
SORT_STRING - 將專案按照字串比較
每個陣列之後不能指定兩個同類的排序標誌。每個陣列後指定的排序標誌僅對該陣列有效 - 在此之前為預設值 SORT_ASC 和 SORT_REGULAR。
如果成功則返回 TRUE,失敗則返回 FALSE。
例子 1. 對多個數組排序
|
本例中經過排序後,第一個陣列將包含 10,"a",100,100。第二個陣列將包含 1,1,"2",3。第二個陣列中的專案順序完全和第一個陣列中相應的專案(100 和 100)順序一致。
例子 2. 對多維陣列排序
|
本例中經過排序後,第一個陣列將包含 10,100,100,"a"(作為字串上升排序),第二個陣列將包含 1,3,"2",1(作為數值下降排序)。
【譯者注】本函式相當有用,為有助於理解,請看下面這個例子:
例子 3. 名次排列
----以上摘自PHP手冊 PHP陣列排序可以用array_multisort方法實現,但是如果是多維陣列,並且我們要指定陣列中的某個欄位進行排序,那麼這就需要我們自己寫方法實現了。本文分享了一段PHP指定欄位的多維陣列排序方法的程式碼,這段程式碼可實現根據field欄位對陣列進行排序。 view sourceprint? function sortArrByField(&$array, $field, $desc = false){ $fieldArr = array(); foreach ($array as $k => $v) { $fieldArr[$k] = $v[$field]; } $sort = $desc == false ? SORT_ASC : SORT_DESC; array_multisort($fieldArr, $sort, $array); } 以上就是PHP指定欄位的多維陣列排序方法 |