PHP 數組排序函數sort,rsort,ksort,krsort,asort,arsort區別

原博地址:https://www.cnblogs.com/TimeStory/p/4201385.html

一、概念:
    1、自然排序法:即按自然數的大小排序,例如“10>2”;
    2、計算機標準排序法:是以逐個字符比較,排序,例如“2>10”(因爲第一位2>1);
    3、數值數組:帶有數字 ID 鍵的數組;
    4、關聯數組:帶有指定的鍵的數組,每個鍵關聯一個值。
    5、默認的排序爲按鍵值升序排序,排序方式爲自然排序。

二、【幫助理解】
  1、a(association)前綴表示以鍵值關聯排序;
  2、k(key)前綴表示以鍵名關聯排序;
  3、r(reverse)前綴表示以反方向排序。

三、排序
例子:

1     $arr = array("Ben"=>"2","peter"=>"10","Joe"=>"30");
2     echo "-------------echo array-------------<br>";
3     foreach ($arr as $key => $value) {
4         # code...
5         echo "key= ".$key.",value= ".$value."<br>";
6     }

1、排序數值數組:
  1)、sort:默認的排序,即按鍵值升序排序,因爲該函數用於排序一維數組,所有排序出來的鍵名會被重新規定,關聯數組用此方法排序,則關聯數組的鍵名不被保留,換成的是數字鍵。
  2)、rsort:該函數與sort函數用法類似,不同的是按鍵值逆序排序。

 

 1     echo "-------------sorts by sort-------------<br>";
 2     sort($arr);
 3     foreach ($arr as $key => $value) {
 4         # code...
 5         echo "key= ".$key.",value= ".$value."<br>";
 6     }
 7 
 8     echo "-------------sorts by rsort-------------<br>";
 9     rsort($arr);
10     foreach ($arr as $key => $value) {
11         # code...
12         echo "key= ".$key.",value= ".$value."<br>";
13     }

 

輸出結果:
-------------echo array-------------
key= Ben,value= 2
key= peter,value= 10
key= Joe,value= 30
-------------sorts by sort-------------
key= 0,value= 2
key= 1,value= 10
key= 2,value= 30
-------------sorts by rsort-------------
key= 0,value= 30
key= 1,value= 10
key= 2,value= 2

2、排序關聯數組:
關聯數組的排序有兩種排序項,第一種以數組的鍵名排序,第二種以數組的鍵值排序。
    按鍵名排序:
        1)、ksort:按關聯數組的鍵名升序排序,排序的結果保留鍵值的關聯關係。
        2)、krsort:按關聯數組的鍵名逆序排序,排序的結果保留鍵值的關聯關係。

 

 1     echo "-------------sorts by ksort--------------<br>";
 2     ksort($arr);
 3     foreach ($arr as $key => $value) {
 4         # code...
 5         echo "key= ".$key.",value= ".$value."<br>";
 6     }
 7 
 8     echo "-------------sorts by krsort-------------<br>";
 9     krsort($arr);
10     foreach ($arr as $key => $value) {
11         # code...
12         echo "key= ".$key.",value= ".$value."<br>";
13     }

 

 輸出結果:
-------------echo array-------------
key= Ben,value= 2
key= peter,value= 10
key= Joe,value= 30
-------------sorts by ksort--------------
key= Ben,value= 2
key= Joe,value= 30
key= peter,value= 10
-------------sorts by krsort-------------
key= peter,value= 10
key= Joe,value= 30
key= Ben,value= 2  

  按鍵值排序:
        1)、asort:按關聯數組的鍵值升序排序,排序的結果保留鍵值的關聯關係
        2)、arsort:按關聯數組的鍵值逆序排序,排序的結果保留鍵值的關聯關係。

 

 1     echo "-------------sorts by asort-------------<br>";
 2     asort($arr);
 3     foreach ($arr as $key => $value) {
 4         # code...
 5         echo "key= ".$key.",value= ".$value."<br>";
 6     }
 7 
 8     echo "-------------sorts by arsort-------------<br>";
 9     arsort($arr);
10     foreach ($arr as $key => $value) {
11         # code...
12         echo "key= ".$key.",value= ".$value."<br>";
13     }

 

輸出結果:
-------------echo array-------------
key= Ben,value= 2
key= peter,value= 10
key= Joe,value= 30
-------------sorts by asort-------------
key= Ben,value= 2
key= peter,value= 10
key= Joe,value= 30
-------------sorts by arsort-------------
key= Joe,value= 30
key= peter,value= 10
key= Ben,value= 2

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