PHP数组排序函数

PHP数组排序函数_第1张图片

  • 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 位运算),不区分大小写排序字符串。

你可能感兴趣的:(PHP)