PHP數組元素的順序和逆序排列

對一個數組的元素排序是很常見的編程任務,比如順序、逆序,還有排序是否保持元素的鍵值對問題,下面開始研究下這些問題。

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);
2 sort($grades);
3 print_r($grades);

值得注意到一點是,使用這個函數後,數組元素的鍵/值關聯不再保持。看看下面的例子:

1 $fruits array("apple" => "red""banana" => "yellow""pear" =>"orange");
2 sort($fruits);
3  
4 echo '<pre>';
5 print_r($fruits);
6 echo '</pre>';

程序運行結果:

1 Array
2 (
3     [0] => orange
4     [1] => red
5     [2] => yellow
6 )

保持鍵/值對的排序函數asort()

assort()函數與sort()函數相同,以升序對數組排序,只不過它將保持鍵/值得關聯。其形式如下:

1 void asort(array array[,integer sort_flags])

還是使用上面的例子:

1 $fruits array("apple" => "red""banana" => "yellow""pear" =>"orange");
2 asort($fruits);
3 print_r($fruits);

程序運行輸出:

1 Array
2 (
3     [pear] => orange
4     [apple] => red
5     [banana] => yellow
6 )

如果使用可選的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);
2 rsort($fruits);
3 print_r($fruits);

同樣,這個函數也不能保持數組的鍵值對關係。

保持鍵/值對的逆序排序函數arsort()

與asort()一樣,arsort()會保持鍵/值得關聯。但是,它以降序對數組進行排序,其形式如下:

1 void arsort(array array[,integer sort_flags])

實例程序如下:

1 $fruits array("apple" => "red""banana" => "yellow""pear" =>"orange");
2 arsort($fruits);
3 print_r($fruits);

程序運行結果爲:

1 Array
2 (
3     [banana] => yellow
4     [apple] => red
5     [pear] => orange
6 )

以上是常用的排序函數,當然還有其它排序函數,後面會繼續介紹。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章