php函数sort,rsort,ksort,krsort,asort,arsort区别详解

sort,rsort,ksort,krsort,asort,arsort函数用来对数组进行排序,本篇笔记对这6个函数的功能区别,传入参数和返回值进行了介绍,并通过范例加深了解他们之间的区别

函数功能

函数 功能
sort 按数组的值进行升序排序
rsort 按数组的值进行降序排序
ksort 按数组的键进行升序排序,并保留键值关系
krsort 按数组的键进行降序排序,并保留键值关系
asort 按数组的值进行升序排序,并保留键值关系
arsort 按数组的值进行降序排序,并保留键值关系

参数介绍

函数名 ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
以上6个函数的传入参数和返回值相同
传入参数
&$array – 必须传入要排序的数组的引用
$sort_flags – 可选传入改变排序的行为
$sort_flags可选值如下
SORT_REGULAR – 正常比较单元(不改变类型)
SORT_NUMERIC – 单元被作为数字来比较
SORT_STRING – 单元被作为字符串来比较
SORT_LOCALE_STRING – 根据当前的区域(locale)设置来把单元当作字符串比较,可以用 setlocale() 来改变
SORT_NATURAL – 对每个单元以“自然的顺序”对字符串进行排序
SORT_FLAG_CASE – 能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符串
返回值
成功时返回 TRUE, 失败时返回 FALSE

范例

声明一个数组

$array = [1 => 'construct', 'c' => 'behavior', 3 => 'abstract', 'a' => 'jmsite'];

sort和rsort对比

$arr = $array;
sort($arr);
print_r($arr);

$arr = $array;
rsort($arr);
print_r($arr);

输出

Array
(
    [0] => abstract
    [1] => behavior
    [2] => construct
    [3] => jmsite
)
Array
(
    [0] => jmsite
    [1] => construct
    [2] => behavior
    [3] => abstract
)

以上php代码执行后,数组按照值进行了升序和降序的排序,但键值关系没有保留
ksort和krsort对比

$arr = $array;
ksort($arr);
print_r($arr);

$arr = $array;
krsort($arr);
print_r($arr);

输出

Array
(
    [a] => jmsite
    [c] => behavior
    [1] => construct
    [3] => abstract
)
Array
(
    [3] => abstract
    [1] => construct
    [c] => behavior
    [a] => jmsite
)

以上php代码执行后,数组按照键进行了升序和降序的排序,键值关系保留
asort和arsort对比

$arr = $array;
asort($arr);
print_r($arr);

$arr = $array;
arsort($arr);
print_r($arr);

输出

Array
(
    [3] => abstract
    [c] => behavior
    [1] => construct
    [a] => jmsite
)
Array
(
    [a] => jmsite
    [1] => construct
    [c] => behavior
    [3] => abstract
)

以上php代码执行后,数组按照值进行了升序和降序的排序,键值关系保留