PHP数组排序函数

排序函数属性

  • array_multisort() : 这个函数相对复杂,可以看下这篇博客关于PHP array_multisort() 函数的理解

  • asort() : 按照元素值对数组从小到大进行排序,键名不会被重置。第一个参数为排序数组,第二个参数可选,用来指定将数组元素按照那种类型(数字或者字符串等)进行比较。详情见附录。

$fruits = array(1,3,-10);
asort($fruits);
print_r($fruits);  //Array ( [2] => -10 [0] => 1 [1] => 3 )
  • arsort() : 按照元素值对数组从大到小进行排序,键名不会被重置。第一个参数为排序数组;第二个参数可选,用来指定将数组元素按照那种类型(数字或者字符串等)进行比较,详情见附录。
$fruits = array(1,3,-10);
arsort($fruits);
print_r($fruits);  //Array ( [1] => 3 [0] => 1 [2] => -10 )
  • ksort() : 按照键名对数组从小到大进行排序,不会影响到键值。第一个参数为排序数组;第二个参数可选,用来指定将数组元素按照那种类型(数字或者字符串等)进行比较,详情见附录。
$array = [
    8 => 12,
    99 => 43,
    2 => 20,
    -10 => 0
];
ksort($array);
print_r($array);   //Array ( [-10] => 0 [2] => 20 [8] => 12 [99] => 43 )
  • krsort():按照键名对数组从大到小进行排序,不会影响到键值。第一个参数为排序数组;第二个参数可选,用来指定将数组元素按照那种类型(数字或者字符串等)进行比较,详情见附录。
$array = [
    8 => 12,
    99 => 43,
    2 => 20,
    -10 => 0
];
krsort($array);
print_r($array);    //Array ( [99] => 43 [8] => 12 [2] => 20 [-10] => 0 )
  • natsort() : 按照“自然排序法”的比较规则对数组元素值从小到大进行排序,索引不会被重置。说我ie自然排序法就是按照人们常见的字母数字字符串进行排序的方法规则。
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");

echo "原始数组\n";
print_r($array1);

asort($array1);
echo "asort排序数组\n";
print_r($array1);

natsort($array2);
echo "\nnatsort(自然排序)数组\n";
print_r($array2);
/*
 * 显示结果
 * 
原始数组
Array
(
    [0] => img12.png
    [1] => img10.png
    [2] => img2.png
    [3] => img1.png
)
asort排序数组
Array
(
    [3] => img1.png
    [1] => img10.png
    [0] => img12.png
    [2] => img2.png
)

natsort(自然排序)数组
Array
(
    [3] => img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)*/
  • natcasesort() : 这个函数是natsort()函数的不区分字母大小写的版本。除了不区分字母大小写外和natsort()函数都一致。
$array1 = $array2 = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png');

echo "原始数组\n";
print_r($array1);

asort($array1);
echo "asort排序数组\n";
print_r($array1);

natcasesort($array2);
echo "\nnatsort(自然排序)数组\n";
print_r($array2);

/*
 * 显示结果
 * 
原始数组
Array
(
    [0] => IMG0.png
    [1] => img12.png
    [2] => img10.png
    [3] => img2.png
    [4] => img1.png
    [5] => IMG3.png
)
asort排序数组
Array
(
    [0] => IMG0.png
    [5] => IMG3.png
    [4] => img1.png
    [2] => img10.png
    [1] => img12.png
    [3] => img2.png
)

natsort(自然排序)数组
Array
(
    [0] => IMG0.png
    [4] => img1.png
    [3] => img2.png
    [5] => IMG3.png
    [2] => img10.png
    [1] => img12.png
)*/
  • rsort():对数组元素进行倒序(从大到小)排序,key值会被重置而丢失。第一个参数是需要排序的数组,第二个参数可选,用来指定将数组元素按照那种类型(数字或者字符串等)进行比较。详情见附录。
$array = ['a'=>10,-1,889,0];
rsort($array);
print_r($array); //Array ( [0] => 889 [1] => 10 [2] => 0 [3] => -1 )
  • sort():对数组元素进行正序(从小到大)排序,key值会被重置而丢失。第一个参数是需要排序的数组,第二个参数可选,用来指定将数组元素按照那种类型(数字或者字符串等)进行比较,详情见附录。
$array = ['a'=>10,-1,889,0];
sort($array);
print_r($array); //Array ( [0] => -1 [1] => 0 [2] => 10 [3] => 889 )
  • shuffle() : 打乱数组元素顺序。
$array = [
    991,
    10,
    0,
    8,
    7
];
shuffle($array);
print_r($array); //Array ( [0] => 991 [1] => 8 [2] => 10 [3] => 7 [4] => 0 ) 这个返回值是随机的

附录-排序类型标记 :

来源:PHP数组排序类型标记

  • SORT_REGULAR - 正常比较单元(不改变类型)
  • SORT_NUMERIC - 单元被作为数字来比较
  • SORT_STRING - 单元被作为字符串来比较
  • SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比 较,可以用 setlocale() 来改变。
  • SORT_NATURAL - 和 natsort() 类似对每个单元以“自然的顺序”对字符串进行排序。 PHP 5.4.0 中新增的。
  • SORT_FLAG_CASE - 能够与 SORT_STRING 或 SORT_NATURAL 合并(OR 位运算),不区分大小写排序字符串。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值