對一個數組的元素排序是很常見的編程任務,比如順序、逆序,還有排序是否保持元素的鍵值對問題,下面開始研究下這些問題。
sort()函數
sort()函數對數組進行排序,各元素按值由低到高的順序排列。其形式如下:
1 |
void
sort ( array array [,int
sort_flags]) |
sort()函數不返回排序後的數組。相反,它只是“就地”對數組排序,不論結果如何都不返回任何值。sort_flags參數可選,將根據這個參數指定的值修改該函數的默認行爲。
- SORT_NUMBERIC,按數值排序。對整數或浮點數排序時很有用。
- SORT_REGULAR,按照相應的ASCll值對元素排序。例如,這意味着B在a的前面。在網上很快就能查到很多ASCII表,所以這裏就不再列出了。
- SORT_STRING,按接近於人所認知的正確順序對元素排序。有關的更多信息請本節後面介紹的natsort()。
下面來看一個例子。假設希望由低到高對考試成績進行排序:
1 |
$grades = array (42,57,98,100,13,43,78,12); |
值得注意到一點是,使用這個函數後,數組元素的鍵/值關聯不再保持。看看下面的例子:
1 |
$fruits = array ( "apple" => "red" , "banana" => "yellow" , "pear" => "orange" ); |
程序運行結果:
保持鍵/值對的排序函數asort()
assort()函數與sort()函數相同,以升序對數組排序,只不過它將保持鍵/值得關聯。其形式如下:
1 |
void
asort( array array [,integer
sort_flags]) |
還是使用上面的例子:
1 |
$fruits = array ( "apple" => "red" , "banana" => "yellow" , "pear" => "orange" ); |
程序運行輸出:
如果使用可選的sort_flags參數,具體的排序行爲將由這個值確定,可以參考sort()排序的部分。
逆序排序函數rsort()
rsort()函數與sort()函數相同,只不過它以相反的順序(降序)對數組進行元素排序。其形式如下:
1 |
void
rsort( array array [,integer
sort_flags]) |
1 |
$fruits = array (42,57,98,100,13,43,78,12); |
同樣,這個函數也不能保持數組的鍵值對關係。
保持鍵/值對的逆序排序函數arsort()
與asort()一樣,arsort()會保持鍵/值得關聯。但是,它以降序對數組進行排序,其形式如下:
1 |
void
arsort( array array [,integer
sort_flags]) |
實例程序如下:
1 |
$fruits = array ( "apple" => "red" , "banana" => "yellow" , "pear" => "orange" ); |
程序運行結果爲:
以上是常用的排序函數,當然還有其它排序函數,後面會繼續介紹。