一、數組排序概述
在我們開發項目的時候,經常需要對數組進行排序。PHP提供了非常豐富的數組排序函數,可以輕鬆實現我們的需求。
數組排序函數主要分為兩類:內部排序和外部排序。內部排序是針對原數組進行排序,而外部排序則是將原數組複製一份進行排序。
內部排序可以節省內存開銷,但是會影響原數組的值。而外部排序則可以保留原數組的值,但是會增加額外的內存開銷。
二、數組內部排序函數
1. sort()
sort()函數可以對數組進行升序排列,也就是從小到大排序。以下示例代碼演示了如何使用sort()函數:
$arr = array(3, 1, 2, 5, 4);
sort($arr);
print_r($arr);
輸出結果為:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
2. rsort()
rsort()函數可以對數組進行降序排列,也就是從大到小排序。以下示例代碼演示了如何使用rsort()函數:
$arr = array(3, 1, 2, 5, 4);
rsort($arr);
print_r($arr);
輸出結果為:
Array
(
[0] => 5
[1] => 4
[2] => 3
[3] => 2
[4] => 1
)
3. asort()
asort()函數可以按照關聯數組的值進行升序排列。以下示例代碼演示了如何使用asort()函數:
$arr = array("a" => 3, "b" => 1, "c" => 2, "d" => 5, "e" => 4);
asort($arr);
print_r($arr);
輸出結果為:
Array
(
[b] => 1
[c] => 2
[a] => 3
[e] => 4
[d] => 5
)
4. arsort()
arsort()函數可以按照關聯數組的值進行降序排列。以下示例代碼演示了如何使用arsort()函數:
$arr = array("a" => 3, "b" => 1, "c" => 2, "d" => 5, "e" => 4);
arsort($arr);
print_r($arr);
輸出結果為:
Array
(
[d] => 5
[e] => 4
[a] => 3
[c] => 2
[b] => 1
)
5. ksort()
ksort()函數可以按照關聯數組的鍵進行升序排列。以下示例代碼演示了如何使用ksort()函數:
$arr = array("a" => 3, "b" => 1, "c" => 2, "d" => 5, "e" => 4);
ksort($arr);
print_r($arr);
輸出結果為:
Array
(
[a] => 3
[b] => 1
[c] => 2
[d] => 5
[e] => 4
)
6. krsort()
krsort()函數可以按照關聯數組的鍵進行降序排列。以下示例代碼演示了如何使用krsort()函數:
$arr = array("a" => 3, "b" => 1, "c" => 2, "d" => 5, "e" => 4);
krsort($arr);
print_r($arr);
輸出結果為:
Array
(
[e] => 4
[d] => 5
[c] => 2
[b] => 1
[a] => 3
)
7. usort()
usort()函數可以按照自定義的比較函數對數組進行排序。以下示例代碼演示了如何使用usort()函數:
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$arr = array(3, 1, 2, 5, 4);
usort($arr, "cmp");
print_r($arr);
輸出結果為:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
8. uasort()
uasort()函數可以按照自定義的比較函數對關聯數組的值進行排序。以下示例代碼演示了如何使用uasort()函數:
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a 3, "b" => 1, "c" => 2, "d" => 5, "e" => 4);
uasort($arr, "cmp");
print_r($arr);
輸出結果為:
Array
(
[b] => 1
[c] => 2
[a] => 3
[e] => 4
[d] => 5
)
9. uksort()
uksort()函數可以按照自定義的比較函數對關聯數組的鍵進行排序。以下示例代碼演示了如何使用uksort()函數:
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a 3, "b" => 1, "c" => 2, "d" => 5, "e" => 4);
uksort($arr, "cmp");
print_r($arr);
輸出結果為:
Array
(
[a] => 3
[b] => 1
[c] => 2
[d] => 5
[e] => 4
)
三、數組外部排序函數
1. array_multisort()
array_multisort()函數可以對多個數組進行排序。以下示例代碼演示了如何使用array_multisort()函數:
$arr1 = array(3, 1, 2, 5, 4);
$arr2 = array("a", "b", "c", "d", "e");
array_multisort($arr1, $arr2);
print_r($arr1);
print_r($arr2);
輸出結果為:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
Array
(
[0] => b
[1] => c
[2] => a
[3] => e
[4] => d
)
2. shuffle()
shuffle()函數可以隨機打亂數組中元素的順序。以下示例代碼演示了如何使用shuffle()函數:
$arr = array(3, 1, 2, 5, 4);
shuffle($arr);
print_r($arr);
輸出結果為:
Array
(
[0] => 4
[1] => 2
[2] => 3
[3] => 1
[4] => 5
)
3. array_reverse()
array_reverse()函數可以將數組中的元素順序反轉。以下示例代碼演示了如何使用array_reverse()函數:
$arr = array(3, 1, 2, 5, 4);
$arr_reverse = array_reverse($arr);
print_r($arr_reverse);
輸出結果為:
Array
(
[0] => 4
[1] => 5
[2] => 2
[3] => 1
[4] => 3
)
4. array_slice()
array_slice()函數可以從數組中截取一段指定長度的元素。以下示例代碼演示了如何使用array_slice()函數:
$arr = array(3, 1, 2, 5, 4);
$arr_slice = array_slice($arr, 1, 3);
print_r($arr_slice);
輸出結果為:
Array
(
[0] => 1
[1] => 2
[2] => 5
)
總結:
以上就是數組排序的一些常用函數和方法,通過這些函數和方法,我們可以方便地對數組進行排序操作。在實際項目開發中,如何合理使用這些函數和方法,將會大大提高開發效率和代碼的可維護性。希望本文能夠對PHP工程師們有所幫助!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/152022.html
微信掃一掃
支付寶掃一掃