网站导航:首页-WEB前端/后端-PHP中的数组排序函数

PHP中的数组排序函数

最近更新:2020-05-06

在PHP中有很多对数组排序的函数,比如sortrsortasortarsortksortkrsort等,这些函数功能相似,它们有相同的地方,也有不同的地方。相同的有:1.这些函数都是用来给数组排序的函数;2.它们都需要传两个参数,第一个参数是待排序的数组(必选),第二个是规定了如何比较数组的元素/项目(可选,将在文章结尾介绍);3.排序后会产生新数组重新赋值给原数组;4.函数运行成功返回true,否则返回false。它们之间的不同点,介绍如下:

sort($arr)

此函数将数组$arr的值按从小到大的顺序排序(按照编码的大小进行排序,下同),排序后按照键为0,1,2,...的顺序组成新数组。例如:

$arr = array(
    "c" => 5,
    "b" => 4,
    "a" => 3,
    "d" => 2,
    "e" => 1
);
sort($arr);
print_r($arr);

运行以上代码可以得到如下结果:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

可以看到,新函数的值是按照从小到大的顺序排列的,而原有的键并不存在了。

rsort($arr)

此函数的作用与sort($arr)函数的作用相似,唯一不同的是此函数将数组按照值从大到小排序。例如:

$arr = array(
    "c" => 5,
    "b" => 4,
    "a" => 3,
    "d" => 2,
    "e" => 1
);
rsort($arr);
print_r($arr);

运行以上代码可以得到如下结果:

Array
(
    [0] => 5
    [1] => 4
    [2] => 3
    [3] => 2
    [4] => 1
)

可以看到,新函数的值是按照从大到小的顺序排列的,而原有的键并不存在了。

asort($arr)

此函数的作用与sort($arr)函数的作用相似,唯一不同的是此函数不会丢失原数组的键。例如:

$arr = array(
	"c" => 5,
    "b" => 4,
    "a" => 3,
    "d" => 2,
    "e" => 1
);
asort($arr);
print_r($arr);

运行以上代码可以得到如下结果:

Array
(
    [e] => 1
    [d] => 2
    [a] => 3
    [b] => 4
    [c] => 5
)

arsort($arr)

此函数的作用与rsort($arr)函数的作用相似,唯一不同的是此函数不会丢失原数组的键。例如:

$arr = array(
    "c" => 5,
    "b" => 4,
    "a" => 3,
    "d" => 2,
    "e" => 1
);
arsort($arr);
print_r($arr);

运行以上代码可以得到如下结果:

Array
(
    [c] => 5
    [b] => 4
    [a] => 3
    [d] => 2
    [e] => 1
)

ksort($arr)

此函数将数组$arr的键按照从小到大的顺序进行排序,例如:

$arr = array(
    "c" => 5,
    "b" => 4,
    "a" => 3,
    "d" => 2,
    "e" => 1
);
ksort($arr);
print_r($arr);

运行以上代码可以得到如下结果:

Array
(
    [a] => 3
    [b] => 4
    [c] => 5
    [d] => 2
    [e] => 1
)

krsort($arr)

此函数将数组$arr的键按照从小到大的顺序进行排序,例如:

$arr = array(
    "c" => 5,
    "b" => 4,
    "a" => 3,
    "d" => 2,
    "e" => 1
);
krsort($arr);
print_r($arr);

运行以上代码可以得到如下结果:

Array
(
    [e] => 1
    [d] => 2
    [c] => 5
    [b] => 4
    [a] => 3
)

规定如何比较数组的元素/项目(第二个参数)

此参数为可选参数,可取如下值:

0 = SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)

1 = SORT_NUMERIC - 把每一项作为数字来处理。

2 = SORT_STRING - 把每一项作为字符串来处理。

3 = SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。

4 = SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。

5 = SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

(正文完)

如果您对本文由任何意见或建议,或者想留言或评论,请随时提交工单进行反馈。

到底线啦,请:返回目录页|返回首页