PHP 数组排序
排序有sort,rsort,asort,resort,ksort,rksort方法,以及自定义排序方法usort。
PHP针对数字索引数组排序方法
申明数字索引数组
Example:
$products=array("LYG","WCS", "ABC", "DEG", "SSG",);
$numbers=range(1,10);
$chars=range("a","z");
升序排序方法sort
Example:
Sort($products);
Sort 方法还第二个可选参数,如果不写默认是SORT_REGULAR常规排序,另外还提供SORT_NUMERIC,SORT_STRING两种排序规则。
Example:
Sort($numbers,SORT_NUMERIC);//排数字顺序排
Sort($chars,SORT_STRING);//按字符串排
降序排序方法rsort
Example:
rsort($products);
降序也有第二个可选参数,参考前面的sort方法说明。
Example
rsort($products,SORT_REGULAR);
PHP针对关联数组排序方法
申明关联数组
Example:
$prices=array("PHP"=>100,"C#"=>50,"Java"=>20,"C++"=>60);
$prices["Python"]=40;//添加数组元素到未尾
升序排序方法asort、ksort
Example:
asort($prices);//按值升序排列。
ksort($prices);//按关键词升序排序。
asort、ksort也有第二个可选参数,参考前面的sort方法说明。
Example:
asort($prices,SORT_NUMERIC);
ksort($prices,SORT_STRING);
降序排序方法rasort、rksort
Example:
rasort($prices);
rksort($prices);
rasort、rksort也有第二个可选参数,参考前面的sort方法说明。
Example:
rasort($prices,SORT_NUMERIC);
rksort($prices,SORT_STRING);
自定义排序方法usort
Example:
$products=array(
array('TIR','Tires',100),
array('OIL','Oil',10),
array('SPK','SparkPlugs',4),
);
需要对这个二维数组存储了产品代码,产品说明以及价格的信息。有可能按产品代码排序或者价格排序又或者通过产品代码和价格同时排序。自定义排序方法需要申明一个排序函数。
Example:
function compare($x,$y)
{
if($x[1]==$y[1])
{
return 0;
}
else if($x[1]<$y[1])
{
return -1;
}
else
{
return 1;
}
}
usort($products,”compare”);//调用示例
说明下:$x,$y是表示的这个数组的元素,$x[1],$y[1]表示按这个数组的第1个元素,因为下标是从0开始的,如果需要按产品价格排序需要把1改成2即$x[2]$y[2],即按产品说明这一列来排序的,示例是按升序排列的。
同理asort,ksort对应的自定义排序方法为uasort,uksort,也需要申明对应的排序函数。
以上是通过升序排列,如果需要反序排列,需要修改下排序函数,如下只要修改返回值的方式。
Example:
function reverse_compare($x,$y)
{
if($x[2]==$y[2])
{
return 0;
}
else if($x[2]<$y[2])
{
return 1;
}
else
{
return -1;
}
}
usort($products,” reverse_compare”);//调用示例
对数组进行重新排序
使用shuffle函数进行随机排序,使用array_reverse对原来的顺序进行反序排序。
Example:
shuffle($products);//随机排序
array_reverse($products);//反序排序
如果是整数的反序,还可以使用range(1,10,-1)来达到反序效果,把range步值改为-1。