数组中的元素能够以字母或数字顺序进行升序或降序排序。
PHP - 数组的排序函数
- sort() - 以升序对数组排序
- rsort() - 以降序对数组排序
- asort() - 根据值,以升序对关联数组进行排序
- ksort() - 根据键,以升序对关联数组进行排序
- arsort() - 根据值,以降序对关联数组进行排序
- krsort() - 根据键,以降序对关联数组进行排序
sort ( array &$array [, int $sort_flags])
该函数会对目标数组进行排序,各元素按值由低到高的顺序排列.注意,该函数参数是按引用传递的,它并不是返回排序后的数组.相反,它只是对当前数组排序,不论结果如何都不返回任何值.
注意: 本函数为 array 中的单元赋予新的键名.这将删除原有的键名而不仅是重新排序.
$arr = array(9,5,2,6,8,4,3,1); sort($arr); print_r($arr); ?>
输出:(可以看到键值关联不再保持)
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 8 [7] => 9 )
asort ( array &$array [, int$sort_flags] )
本函数对数组进行排序,数组的索引保持和单元的关联.主要用于对那些单元顺序很重要的结合数组进行排序.
<?php $arr = array(5,2,6,8,4,1); asort($arr); print_r($arr); ?>
输出(可以看到键值保持不变):
Array ( [5] => 1 [1] => 2 [4] => 4 [0] => 5 [2] => 6 [3] => 8 )
rsort ( array &$array [, int$sort_flags] )
本函数类似sort函数, 对数组进行逆向排序(最高到最低)。
注:
本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。
如果成功则返回
arsort ( array &$array [, int$sort_flags] )
本函数对数组进行逆向排序,数组的索引保持和单元的关联。主要用于对那些单元顺序很重要的结合数组进行排序。arsort()函数与asort()相同,只是它以相反的顺序(降序)对数组元素排序。
如果成功则返回
ksort ( array &$array [, int$sort_flags] )
ksort和sort的区别就是对数组按照键名排序而不是按值排序,保留键名到数据的关联.本函数主要用于关联数组. 如果成功则返回TRUE,失败则返回 FALSE。
krsort ( array &$array [, int$sort_flags] )
见ksort,该函数同ksort只是把ksort后的结果逆序排序而已。
natsort ( array &$array )
本函数实现了一个和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键/值的关联,这被称为“自然排序”.本算法和通常的计算机字符串排序算法(用于sort())的区别见下面示例.
如果成功则返回 TRUE,失败则返回 FALSE.
php手册中有个非常经典的例子
<?php $array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png"); sort($array1); echo "Standard sorting\n"; print_r($array1); natsort($array2); echo "\nNatural order sorting\n"; print_r($array2); ?>
上例将输出:Standard sorting
Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png )
Natural order sorting
Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )
array_keys($array) //返回所有键名
array_values($array) //返回所有键值
$result=array_reverse($input); //将数组颠倒,不保留键名
$result_keyed=array_reverse($input,true); //将数组颠倒,保留键名
array_keys($array,"blue"); //返回值为blue的键名