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