php按照指定顺序的排序

Posted 姗姗醉了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php按照指定顺序的排序相关的知识,希望对你有一定的参考价值。

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

    $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按照指定顺序的排序的主要内容,如果未能解决你的问题,请参考以下文章

oracle按照指定顺序进行排序

Mysql中ORDER BY 排序怎么使用?指定顺序和多字段排列

dataframe 按照指定顺序排序

dataframe 按照指定顺序排序

dataframe 按照指定顺序排序

dataframe 按照指定顺序排序