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

1、概念:
    一、天然排序法:即按天然數的大小排序,例如「10>2」;
    二、計算機標準排序法:是以逐個字符比較,排序,例如「2>10」(由於第一位2>1);
    三、數值數組:帶有數字 ID 鍵的數組;
    四、關聯數組:帶有指定的鍵的數組,每一個鍵關聯一個值。
    五、默認的排序爲按鍵值升序排序,排序方式爲天然排序。數組

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

3、排序
例子:spa

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)、sort:默認的排序,即按鍵值升序排序,由於該函數用於排序一維數組,全部排序出來的鍵名會被從新規定,關聯數組用此方法排序,則關聯數組的鍵名不被保留,換成的是數字鍵。
  2)、rsort:該函數與sort函數用法相似,不一樣的是按鍵值逆序排序。code

 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= 2blog

二、排序關聯數組:
關聯數組的排序有兩種排序項,第一種以數組的鍵名排序,第二種以數組的鍵值排序。
    按鍵名排序:
        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   ci

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

 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= 2class

相關文章
相關標籤/搜索