Php 數組排序之多維陣列排序

來源:互聯網
上載者:User
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學習手冊。拋磚引玉,希望對大家有所協助!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.