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


一、概念:
    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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM