码迷,mamicode.com
首页 > 编程语言 > 详细

php按照指定顺序的排序

时间:2018-04-04 18:18:35      阅读:300      评论:0      收藏:0      [点我收藏+]

标签:class   word   number   因此   body   ber   sea   第一个   span   

   今天遇到一个需求,需要对一个数组按指定顺序进行排序,最终查到个解决办法:

    $sort_rule = [5,7,3,1,8,2];

     $arr = [1,2,3,5,7,8];  

//需求,将数组$arr以$sort_rule指定的顺序进行排序

 解决方式1

   $a = array_intersect($sort_rule,$arr);

   $b = array_diff($arr,$sort_rule);

   $re = array_merge($a, $b);

 array_intersect函数的作用是基于第一个数组获取两个数组的交集,如上述例子

   array_intersect($sort_rule, $arr);

   先根据$sort_rule中的第一个元素从$arr中找相同的元素,如果有,则取出, 没有则找第二个元素,依次类推

   因此,最后获取的交集数组的顺序,和$sort_sule数组的顺序是一模一样的 也就实现了按sort_rule指定的顺序进行排序的要求

解决方式2

usort($arr, function ($a, $b) use ($rule) {

return (array_search($a, $rule) < array_search($b, $rule)) ? -1 : 1;

//将排序规则用use传入闭包函数,如果元素$a在$rule中的位置小于$b在$rule中的位置,则返回-1,反之返回1, //usort函数会根据闭包函数的返回值将$a和$b的位置进行调整 });

 

php按照指定顺序的排序

标签:class   word   number   因此   body   ber   sea   第一个   span   

原文地址:https://www.cnblogs.com/sjhsszl/p/8718099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!