PHP排序函数sort(), ksort(), asort()详解及区别

1. 前言

在 PHP 中,sort()、asort() 和 ksort() 都是用来处理数组排序的函数。本文将分别介绍这三个函数的用法和区别,并举例说明它们的使用场景。

2. sort()

sort(array &$array, int $flags = SORT_REGULAR): true

对数组本身按照值(value)升序排序。排序后原来的数组将改变。对应的降序函数是rsort();
函数返回值始终是True
对于索引数组和关联数组,排序后都会改变原有的键名,按照新的索引定义键名。

//Example #1 索引数组
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
print_r($fruits);
结果是:Array ( [0] => apple [1] => banana [2] => lemon [3] => orange )
//Example #2 关联数组
$arr = ['l' => 'lemon', 'o' => 'orange', 'a' => 'apple', 'b' => 'banana'];
sort($arr);
print_r($arr);
// 实现了value升序,但key会重新定义
结果是: Array ( [0] => apple [1] => banana [2] => lemon [3] => orange )

3. ksort()

ksort(array &$array, int $flags = SORT_REGULAR): true

对数组本身按照键名(key)升序排序。排序后原来的数组将改变。对应的降序函数是krsort();
函数返回值始终是True
常用于关联数组,排序后不改变对应的value值。

//Example #1 关联数组
$arr = ['l' => 'lemon', 'o' => 'orange', 'a' => 'apple', 'b' => 'banana'];
ksort($arr);
print_r($arr);
// 实现了key排序,key和value保留对应关系
结果是: Array ( [a] => apple [b] => banana [l] => lemon [o] => orange )

4. asort()

asort(array &$array, int $flags = SORT_REGULAR): true

对数组自身按照值(value)升序排序,并依然保持数组的键与值的关联。对应的降序函数是arsort();
函数返回值始终是True
相对于sort()函数排序后会改变原有的key,如果业务中希望排序后不改变原有的key,则asort()函数可以满足我们的需求。

$arr = ['a' => 'Tom', 'b' => 'Bob', 'c' => 'Carry', 'd' => 'Davi'];
asort($arr);
print_r($arr);
// 实现了value升序,也保留了key和value的对应关系
结果是: Array ( [b] => Bob [c] => Carry [d] => Davi [a] => Tom)

总结

从上面的示例中可以看出:

  1. 如果业务中需根据value排序,同时不考虑key的变化,建议使用sort()函数。
  2. 如果业务中需要根据key排序,使用ksort()函数。
  3. 如果业务中需要根据value排序,同时保持key值不变,使用asort()函数。
  4. rsort()、krsort()、arsort()用于降序处理,用法与上面相同。

以上的说明对您是否有帮助,关注作者一起交流吧。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值