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