PHP数组回忆笔记--数组排序函数
最基本的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 "<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 > $vb)?1:-1;
}
usort($arr,"MySort");
print_r($arr);
?>
输出结果为:
Array( => 02-03-2007 => 03-03-2006 =>05-06-2002 => 06-08-2008 => 18-09-1999 => 20-11-1986 )
Array ( => 02-03-2007 => 03-03-2006 => 05-06-2002 => 06-08-2008 => 18-09-1999 => 20-11-1986 )
Array ( => 20-11-1986 => 18-09-1999 => 05-06-2002 => 03-03-2006 => 02-03-2007 =>06-08-2008 )
页:
[1]