Php 數組排序之多維陣列排序
php 中最強大的類型非數組莫屬!任何類型的資料都可以用數組來儲存。
項目開發中對數組排序已是家常便飯,本文主要是總結一些經驗和方法以及它們的區別,供大家學習參考。
一維數組排序
a、sort 函數:
本函數對數組值裝換為整型並被從最低到最高重新安排,刪除原有的鍵名。成功時返回 TRUE, 或者在失敗時返回 FALSE.
b、asort 函數:
本函數對數組進行低到高排序,數組的索引保持和單元的關聯。主要用於對那些單元順序很重要的結合數組進行排序。
c、arsort 函數:bool
arsort ( array &$array [, int $sort_flags ] )
對數組進行逆向排序(高到低)並保持索引關係
本函數對數組進行排序,數組的索引保持和單元的關聯。主要用於對那些單元順序很重要的結合數組進行排序。
成功時返回 TRUE, 或者在失敗時返回 FALSE.
多維陣列排序
a、usort函數: bool
usort ( array&$array , callback$cmp_function )
本函數將用使用者自訂的比較函數對一個數組中的值進行排序。如果要排序的數組需要用一種不尋常的標準進行排序,那麼應該使用此函數。
比較函數必須在第一個參數被認為小於,等於或大於第二個參數時分別返回一個小於,等於或大於零的整數
此函數為 array 中的元素賦與新的鍵名。這將刪除原有的鍵名,而不是僅僅將鍵名重新排序。
成功時返回 TRUE, 或者在失敗時返回 FALSE.
b、uasort 函數:bool
uasort (array &$array , callback$cmp_function )
uasort ? 使用使用者自訂的比較函數對數組中的值進行排序並保持索引關聯
本函數對數組排序並保持索引和單元之間的關聯。主要用於對那些單元順序很重要的結合數組進行排序。
比較函數是使用者自訂的。
成功時返回 TRUE, 或者在失敗時返回 FALSE.
c、uksort 函數:bool
uksort (array &$array , callback$cmp_function )
本函數將使用使用者提供的比較函數對數組中的鍵名進行排序。如果要排序的數組需要用一種不尋常的標準進行排序,那麼應該使用此函數。
cmp_function 函數應接受兩個參數,該參數將被 array 中的一對鍵名填充。
比較函數在第一個參數小於,等於,或大於第二個參數時必須分別返回一個小於零,等於零,或大於零的整數。
成功時返回 TRUE, 或者在失敗時返回 FALSE(本排序方法和 uasort 非常類似).
c、array_multisort函數: bool
array_multisort ( array$ar1 [, mixed$arg [, mixed$... [, array$... ]]] )
可以用來一次對多個數組進行排序,或者根據某一維或多維對多維陣列進行排序。
關聯(string)鍵名保持不變,但數字鍵名會被重新索引。
本函數的參數結構有些不同尋常,但是非常靈活。
第一個參數必須是一個數組。接下來的每個參數可以是數組或者是下面列出的排序標誌。
排序次序標誌:
?SORT_ASC - 按照上升順序排序
?SORT_DESC - 按照下降順序排序
排序類型標誌:
?SORT_REGULAR - 將項目按照通常方法比較
?SORT_NUMERIC - 將項目按照數值比較
?SORT_STRING - 將項目按照字串比較 每個數組之後不能指定兩個同類的排序標誌。
每個數組後指定的排序標誌僅對該數組有效 - 在此之前為預設值 SORT_ASC 和 SORT_REGULAR。
uasort 排序學習案例:
/* 多維陣列排序 */$arr_more = array( array(1,'age'=> 12,'name' => 'wzq'), array(2,'age'=> 42,'name' => 'eee'), array(9,'age'=> 82,'name' => '22'), array(4,'age'=> 162,'name' => 'ff'), array(6,'age'=> 2,'name' => 'jj'), array(17,'age'=> 52,'name' => 'nn'));uasort($arr_more,function($x,$y){ //age從大到小 return $x['age'] < $y['age'];});var_dump($arr_more);
以上本文就是這些,知識點摘自 php學習手冊。拋磚引玉,希望對大家有所協助!