PHP 使用用户自定义的比较函数对数组元素排序

usort()函数使用用户自定义比较函数对数组中对元素进行排序,如果排序的数组需要使用不寻常的标准来进行排序,我们就使用该函数.


下面我直接贴出我的代码,在代码中我会有一个详细的注释.

1.对一维数组使用自定义函数进行排序.

//定义一个一维数组
$array = [5,6,9,3,10];

//自定义比较函数,比较函数有两个参数,参数的意义是数组中的某个元素的键值.比
//较函数中数组的元素键值比较,必须返回一个大于,小于或者等于0的整数
function rank($a,$b){
    //如果$a元素小于$b元素
    //如果是按照升序的排列,应该返回一个负整数,代表将小的元素放在前面
    //如果是按照升序的降序,应该返回一个正整数,代表将大的元素放在前面
    if($a < $b){
        return -1;
    }elseif ($a > $b){
        //如果$a 大于 $b
        //如果按照升序排列,应该返回一个正整数.
        //如果按照降序排列,就返回一个负整数.
        return 1;
    }else{
        //如果$a = $b,返回0
        return 0;
    }
}

//我们使用usort函数调用自定义排序函数,对数组进行排序,usrot函数是对数组元素赋予了新的键名.旧的键名被删除。
//第二个参数是回调函数,就是我们自定义的排序函数.
usort($array,'rank');
var_dump($array);

二.对二维数组进行排序,按照不寻常对数组进行排序.

<?php
//定义一个二维数组
$array = [['count'=>5],['count'=>3],['count'=>9],['count'=>6],['count'=>15]];
var_dump($array);
//自定义排序函数,我们按照索引数组键值中每个关联数组中count索引名的键值进行排序。
//前面已经说过了,自定义排序函数的参数是数组的某个元素的键值.
function rank($a,$b){
    if($a['count'] < $b['count']){
        return -1;
    }elseif ($a['count'] > $b['count']){
        return 1;
    }else{
        return 0;
    }
}

//使用usort函数调用自定义的排序函数,进行排序
usort($array,'rank');
var_dump($array);

注意:使用自定义比较函数进行排序,两个参数排序,必须返回一个正整数或者负整数,或者0,usort函数使用自定义函数进行排序,是将旧键名删除,重新赋与键值新的键名,而不是将键名排序.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值