sort
對數組排序
$arr = [1,5,4,3,8];
sort($arr);
print_r($arr);
Array
(
[0] => 1
[1] => 3
[2] => 4
[3] => 5
[4] => 8
)
$arr = ['aaa','ddd','bbb','eee','ccc'];
sort($arr);
print_r($arr);
Array
(
[0] => aaa
[1] => bbb
[2] => ccc
[3] => ddd
[4] => eee
)
rsort
對數組逆向排序
$arr = [1,5,4,3,8];
rsort($arr);
print_r($arr);
Array
(
[0] => 8
[1] => 5
[2] => 4
[3] => 3
[4] => 1
)
$arr = ['aaa','ddd','bbb','eee','ccc'];
rsort($arr);
print_r($arr);
Array
(
[0] => eee
[1] => ddd
[2] => ccc
[3] => bbb
[4] => aaa
)
ksort
對數組按照鍵名排序
$arr = [
1=>11,
5=>2,
3=>8,
4=>6,
9=>3
];
ksort($arr);
print_r($arr);
Array
(
[1] => 11
[3] => 8
[4] => 6
[5] => 2
[9] => 3
)
krsort
對數組按照鍵名逆向排序
$arr = [
1=>11,
5=>2,
3=>8,
4=>6,
9=>3
];
krsort($arr);
print_r($arr);
Array
(
[9] => 3
[5] => 2
[4] => 6
[3] => 8
[1] => 11
)
asort
對數組進行排序並保持索引關係
$arr = [
1=>11,
5=>2,
3=>8,
4=>6,
9=>3
];
asort($arr);
print_r($arr);
Array
(
[5] => 2
[9] => 3
[4] => 6
[3] => 8
[1] => 11
)
arsort
對數組進行逆向排序並保持索引關係
$arr = [
1=>11,
5=>2,
3=>8,
4=>6,
9=>3
];
arsort($arr);
print_r($arr);
Array
(
[1] => 11
[3] => 8
[4] => 6
[9] => 3
[5] => 2
)
usort
使用用戶自定義的比較函數對數組中的值進行排序
function compare_func($a, $b)
{
$a = abs($a);
$b = abs($b);
if($a==$b)
return 0;
return $a>$b?1:-1;
}
$arr = [
1=>-11,
5=>2,
3=>8,
4=>6,
9=>-3
];
usort($arr, 'compare_func');
print_r($arr);
Array
(
[0] => 2
[1] => -3
[2] => 6
[3] => 8
[4] => -11
)
uksort
使用用戶自定義的比較函數對數組中的鍵名進行排序
function compare_func($a, $b)
{
$a = abs($a);
$b = abs($b);
if($a==$b)
return 0;
return $a>$b?1:-1;
}
$arr = [
1=>11,
-5=>2,
3=>8,
4=>6,
-9=>3
];
uksort($arr, 'compare_func');
print_r($arr);
Array
(
[1] => 11
[3] => 8
[4] => 6
[-5] => 2
[-9] => 3
)
uasort
使用用戶自定義的比較函數對數組中的值進行排序並保持索引關聯
function compare_func($a, $b)
{
$a = abs($a);
$b = abs($b);
if($a==$b)
return 0;
return $a>$b?1:-1;
}
$arr = [
1=>-11,
5=>2,
3=>8,
4=>6,
9=>-3
];
uasort($arr, 'compare_func');
print_r($arr);
Array
(
[5] => 2
[9] => -3
[4] => 6
[3] => 8
[1] => -11
)
natsort
用“自然排序”算法對數組排序
本函數實現了一個和人們通常對字母數字字符串進行排序的方法一樣的排序算法並保持原有鍵/值的關聯,這被稱爲”自然排序”。本算法和通常的計算機字符串排序算法(用於 sort())的區別見下面示例。
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
asort($array1);
print_r($array1);
natsort($array2);
print_r($array2);
Array
(
[3] => img1.png
[1] => img10.png
[0] => img12.png
[2] => img2.png
)
Array
(
[3] => img1.png
[2] => img2.png
[1] => img10.png
[0] => img12.png
)
natcasesort
用“自然排序”算法對數組進行不區分大小寫字母的排序
$array1 = $array2 = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png');
sort($array1);
print_r($array1);
natcasesort($array2);
print_r($array2);
Array
(
[0] => IMG0.png
[1] => IMG3.png
[2] => img1.png
[3] => img10.png
[4] => img12.png
[5] => img2.png
)
Array
(
[0] => IMG0.png
[4] => img1.png
[3] => img2.png
[5] => IMG3.png
[2] => img10.png
[1] => img12.png
)
array_multisort
對多個數組或多維數組進行排序
關聯(string)鍵名保持不變,但數字鍵名會被重新索引。
$ar1 = array(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, $ar2);
print_r($ar1);
print_r($ar2);
Array
(
[0] => 0
[1] => 10
[2] => 100
[3] => 100
)
Array
(
[0] => 4
[1] => 1
[2] => 2
[3] => 3
)
參考
- PHP手冊