PHP数组元素的顺序与逆序排序

原文地址:http://www.nowamagic.net/librarys/posts/php/47

对一个数组的元素排序是很常见的编程任务,比如顺序、逆序,还有排序是否保持元素的键值对问题,下面开始研究下这些问题。

sort()函数

sort()函数对数组进行排序,各元素按值由低到高的顺序排列。其形式如下:

1void sort (array array[,int sort_flags])

sort()函数不返回排序后的数组。相反,它只是“就地”对数组排序,不论结果如何都不返回任何值。sort_flags参数可选,将根据这个参数指定的值修改该函数的默认行为。

  • SORT_NUMBERIC,按数值排序。对整数或浮点数排序时很有用。
  • SORT_REGULAR,按照相应的ASCll值对元素排序。例如,这意味着B在a的前面。在网上很快就能查到很多ASCII表,所以这里就不再列出了。
  • SORT_STRING,按接近于人所认知的正确顺序对元素排序。有关的更多信息请本节后面介绍的natsort()。

下面来看一个例子。假设希望由低到高对考试成绩进行排序:

1$grades = array(42,57,98,100,13,43,78,12);
2sort($grades);
3print_r($grades);

值得注意到一点是,使用这个函数后,数组元素的键/值关联不再保持。看看下面的例子:

1$fruits = array("apple" => "red", "banana" => "yellow", "pear" => "orange");
2sort($fruits);
3
4echo '<pre>';
5print_r($fruits);
6echo '</pre>';

程序运行结果:

1Array
2(
3    [0] => orange
4    [1] => red
5    [2] => yellow
6)
保持键/值对的排序函数asort()

assort()函数与sort()函数相同,以升序对数组排序,只不过它将保持键/值得关联。其形式如下:

1void asort(array array[,integer sort_flags])

还是使用上面的例子:

1$fruits = array("apple" => "red", "banana" => "yellow", "pear" => "orange");
2asort($fruits);
3print_r($fruits);

程序运行输出:

1Array
2(
3    [pear] => orange
4    [apple] => red
5    [banana] => yellow
6)

如果使用可选的sort_flags参数,具体的排序行为将由这个值确定,可以参考sort()排序的部分。

逆序排序函数rsort()

rsort()函数与sort()函数相同,只不过它以相反的顺序(降序)对数组进行元素排序。其形式如下:

1void rsort(array array[,integer sort_flags])
1$fruits = array(42,57,98,100,13,43,78,12);
2rsort($fruits);
3print_r($fruits);

同样,这个函数也不能保持数组的键值对关系。

保持键/值对的逆序排序函数arsort()

与asort()一样,arsort()会保持键/值得关联。但是,它以降序对数组进行排序,其形式如下:

1void arsort(array array[,integer sort_flags])

实例程序如下:

1$fruits = array("apple" => "red", "banana" => "yellow", "pear" => "orange");
2arsort($fruits);
3print_r($fruits);

程序运行结果为:

1Array
2(
3    [banana] => yellow
4    [apple] => red
5    [pear] => orange
6)

以上是常用的排序函数,当然还有其它排序函数,后面会继续介绍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值