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

来源:互联网 发布:python 目录名称无效 编辑:程序博客网 时间:2024/05/20 07:35

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函数使用自定义函数进行排序,是将旧键名删除,重新赋与键值新的键名,而不是将键名排序.

原创粉丝点击