PHP作為腳本語言,常被用於Web開發方面的應用。數組運算是PHP開發中常用的操作之一,常常需要對數組進行排序以便做更進一步的處理。
對一維數組進行排序通常使用sort()和rsort()函數,它們的區別在於sort()是按升序排序,而rsort()是按降序排序。下面我們來看看它們的用法。
sort()函數可以對陣列進行升序排序。此函數會改變原數組的鍵值關係,並傳回布林值(true或false)表示是否排序成功。
例如,我們有一個一維數組:
$arr = array(5,8,3,0,2,7,1);
我們可以使用sort()函數對其進行升序排序:
sort($arr);
排序後的陣列為:
Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 5 [5] => 7 [6] => 8 )
sort()函數也可以對字串陣列進行排序。需要注意的是,sort()函數排序時會依照ASCII碼表中字元的順序進行排序,而不是依照字典順序進行排序。
例如,我們有一個字串陣列:
$arr = array("apple", "banana", "peach", "orange");
我們使用sort()函數對其進行排序:
sort($arr);
排序後的陣列為:
Array ( [0] => apple [1] => banana [2] => orange [3] => peach )
可見,排序結果並不是按照字母順序排序的。
rsort()函數與sort()函數用法基本上相同,只是它是依降序排序的。
例如,我們有一個一維數組:
$arr = array(5,8,3,0,2,7,1);
我們可以使用rsort()函數對其進行降序排序:
rsort($arr);
排序後的陣列為:
Array ( [0] => 8 [1] => 7 [2] => 5 [3] => 3 [4] => 2 [5] => 1 [6] => 0 )
rsort()函數同樣適用於字串陣列的排序。
asort()函數和arsort()函數與sort()函數和rsort()函數用法基本上相同,只是它們會保留原始數組的鍵名(鍵值關係)。
例如,我們有一個關聯數組:
$arr = array("apple" => 5, "banana" => 8, "peach" => 3, "orange" => 2);
我們可以使用asort()函數對其進行升序排序:
asort($arr);
排序後的陣列為:
Array ( [orange] => 2 [peach] => 3 [apple] => 5 [banana] => 8 )
可以看到,鍵名(鍵值關係)保持原樣。
arsort()函數同樣適用於對關聯陣列進行降序排序。
ksort()函數和krsort()函數用於對鍵值陣列按鍵名進行升序排序和降序排序。
例如,我們有一個鍵值數組:
$arr = array("x" => 5, "z" => 8, "y" => 3, "w" => 2);
我們可以使用ksort()函數對其進行升序排序:
ksort($arr);
排序後的陣列為:
Array ( [w] => 2 [x] => 5 [y] => 3 [z] => 8 )
可以看到,陣列元素按照鍵名(字母順序)進行了排序。
krsort()函數同樣適用於對鍵值陣列進行降序排序。
以上函數適用於一維數組的排序。處理多維數組時,需要注意排序的層次關係。
例如,我們有一個二維數組:
$arr = array( array("name" => "xiaoming", "age" => 30), array("name" => "xiaohong", "age" => 25), array("name" => "xiaoli", "age" => 20) );
我們可以使用usort()函數對其按照年齡(age)進行升序排序:
usort($arr, function($a, $b){ if($a["age"] == $b["age"]){ return 0; } return ($a["age"] < $b["age"]) ? -1 : 1; });
排序後的陣列為:
Array ( [0] => Array ( [name] => xiaoli [age] => 20 ) [1] => Array ( [name] => xiaohong [age] => 25 ) [2] => Array ( [name] => xiaoming [age] => 30 ) )
可以看到,usort()函數對二維陣列依照年齡進行了升序排序。
對一維陣列進行排序,可以使用sort()函數和rsort()函數。將關聯數組排序,可以使用asort()函數和arsort()函數,對鍵值數組進行排序,可以使用ksort()函數和krsort()函數。當處理多維數組時,可以使用usort()函數來實現排序。以上函數的使用,可以大幅提高數組的處理效率和準確性。
以上是php如何對一維數組進行排序(方法淺析)的詳細內容。更多資訊請關注PHP中文網其他相關文章!