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手册