PHP排序详解

本文详细介绍了PHP中数组排序的方法,包括数字索引数组和关联数组的升序、降序排序,以及如何使用自定义排序函数实现复杂排序需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值