php自定义排序uasort

在项目中,为了实现I(安全)<L(低风险)<M(中风险)<H(高风险)的风险级别排序,由于'H'需要排在'I'之前,因此不能使用常规的sort函数。该博客介绍了如何利用PHP的uasort函数进行自定义排序以满足这一需求。

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

项目需要风险排序,按 I(安全)<L(低风险)<M(中风险)<H(高风险) 的级别来排序


由于H排在I的前面,所以不能直接用sort来排序,要自定义。


用uasort()函数来自定义排序:


/*
 * 二维数组按指定键值排须
 */
function arr_sort($array,$key,$order="asc"){//asc是升序 desc是降序//按 I<L<M<H 排序

    $arr_nums=$arr=array();

    foreach($array as $k=>$v){

        $arr_nums[$k]=$v[$key];

    }

    if($order=='asc'){

        uasort($arr_nums,'my_sort_asc');

    }else{

        uasort($arr_nums,'my_sort_desc');

    }

    foreach($arr_nums as $k=>$v){

        $arr[$k]=$array[$k];

    }

    return $arr;

}
function my_sort_desc($a,$b){
    if($a==$b) return 0;
    if($a=='I' && $b!='I') return 1;
    if($a=='L' && $b!='I') return 1;
    if($a=='L' && $b=='I') return -1;
    if($a=='M' && $b!='H') return -1;
    if($a=='M' && $b=='H') return 1;
    if($a=='H' && $b!='H') return -1;
}
function my_sort_asc($a,$b){
    if($a==$b) return 0;
    if($a=='I' && $b!='I') return -1;
    if($a=='L' && $b!='I') return -1;
    if($a=='L' && $b=='I') return 1;
    if($a=='M' && $b!='H') return 1;
    if($a=='M' && $b=='H') return -1;
    if($a=='H' && $b!='H') return 1;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值