PHP数组回忆笔记--数组排序函数

来源:互联网 发布:淘宝网上传数据包 编辑:程序博客网 时间:2024/05/16 11:10
最基本的sort()函数携带至少一个参数,参数一为待排序数组,可选参数为所依据类型:
  1.SORT_NUMBERIC 按数值型排序,对整型或浮点型很有用。
  2.SORT_REGULAR 按ASCII码进行排序。
  3.SORT_STRING 按接近于人的使用习惯排序。
natsort()相对于sort()提供了一种更接近于人们习惯的排序机制,携带一个参数数组。
natcasesort()与natsort()的区别是不区分大小写。
此外,rsort(),asort(),arsort(),ksort()均可携带两个参数,像sort()一样。
rsort()提供逆排序。
asort()在sort()排序的基础上,关联了原来的键/值,使排序不改变键值的对应。
arsort()提供关联键/值的逆排序。
ksort()针对键进行排序。
array_multisort()函数可以对多个数组同时排序,看下面的例子:
array_multisort($arr1,SORT_STRING,SORT_ASC,
                             $arr2,SORT_STRING,SORT_ASC);
结果:
Array (Array1,Array2);
扩展函数usort()携带两个参数,参数一为待排序数组,参数二为用户自定义排序函数,经典用法(对日-月-年的日期格式排序)如下:
<?php
$arr = array("02-03-2007","18-09-1999","20-11-1986","05-06-2002","03-03-2006","06-08-2008");
$arr1 = sort($arr);
print_r($arr);
echo "&lt;br>";
$arr2 = natsort($arr);
print_r($arr);
echo "<br>";

function MySort($a,$b){
    if ($a == $b) {
        return 0;
    }
    list($day1,$month1,$year1) = explode("-",$a);
    list($day2,$month2,$year2) = explode("-",$b);
    $va = $year1.$month1.$day1;
    $vb = $year2.$month2.$day2;
    return ($va &gt; $vb)?1:-1;
}

usort($arr,"MySort");
print_r($arr);

?&gt;
输出结果为:
Array( [0] =&gt; 02-03-2007 [1] =&gt; 03-03-2006 [2] =&gt;05-06-2002 [3] =&gt; 06-08-2008 [4] =&gt; 18-09-1999 [5]=&gt; 20-11-1986 )
Array ( [0] =&gt; 02-03-2007 [1]=&gt; 03-03-2006 [2] =&gt; 05-06-2002 [3] =&gt; 06-08-2008[4] =&gt; 18-09-1999 [5] =&gt; 20-11-1986 )
Array ( [0]=&gt; 20-11-1986 [1] =&gt; 18-09-1999 [2] =&gt; 05-06-2002[3] =&gt; 03-03-2006 [4] =&gt; 02-03-2007 [5] =&gt;06-08-2008 )
原创粉丝点击