对一个数组的元素排序是很常见的编程任务,比如顺序、逆序,还有排序是否保持元素的键值对问题,下面开始研究下这些问题。
sort()函数对数组进行排序,各元素按值由低到高的顺序排列。其形式如下:
1 void sort (array array[,int sort_flags])sort()函数不返回排序后的数组。相反,它只是“就地”对数组排序,不论结果如何都不返回任何值。sort_flags参数可选,将根据这个参数指定的值修改该函数的默认行为。
SORT_NUMBERIC,按数值排序。对整数或浮点数排序时很有用。SORT_REGULAR,按照相应的ASCll值对元素排序。例如,这意味着B在a的前面。在网上很快就能查到很多ASCII表,所以这里就不再列出了。SORT_STRING,按接近于人所认知的正确顺序对元素排序。有关的更多信息请本节后面介绍的natsort()。下面来看一个例子。假设希望由低到高对考试成绩进行排序:
1 $grades = array(42,57,98,100,13,43,78,12); 2 sort($grades); 3 print_r($grades);值得注意到一点是,使用这个函数后,数组元素的键/值关联不再保持。看看下面的例子:
1 $fruits = array("apple" => "red", "banana" => "yellow", "pear" =>"orange"); 2 sort($fruits); 3 4 echo '<pre>'; 5 print_r($fruits); 6 echo '</pre>';程序运行结果:
1 Array 2 ( 3 [0] => orange 4 [1] => red 5 [2] => yellow 6 )assort()函数与sort()函数相同,以升序对数组排序,只不过它将保持键/值得关联。其形式如下:
1 void asort(array array[,integer sort_flags])还是使用上面的例子:
1 $fruits = array("apple" => "red", "banana" => "yellow", "pear" =>"orange"); 2 asort($fruits); 3 print_r($fruits);程序运行输出:
1 Array 2 ( 3 [pear] => orange 4 [apple] => red 5 [banana] => yellow 6 )如果使用可选的sort_flags参数,具体的排序行为将由这个值确定,可以参考sort()排序的部分。
rsort()函数与sort()函数相同,只不过它以相反的顺序(降序)对数组进行元素排序。其形式如下:
1 void rsort(array array[,integer sort_flags]) 1 $fruits = array(42,57,98,100,13,43,78,12); 2 rsort($fruits); 3 print_r($fruits);同样,这个函数也不能保持数组的键值对关系。
与asort()一样,arsort()会保持键/值得关联。但是,它以降序对数组进行排序,其形式如下:
1 void arsort(array array[,integer sort_flags])实例程序如下:
1 $fruits = array("apple" => "red", "banana" => "yellow", "pear" =>"orange"); 2 arsort($fruits); 3 print_r($fruits);程序运行结果为:
1 Array 2 ( 3 [banana] => yellow 4 [apple] => red 5 [pear] => orange 6 )以上是常用的排序函数,当然还有其它排序函数,后面会继续介绍。