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按照指定顺序的排序的更多相关文章
- 《SQL 进阶教程》 case:练习题1-1-3 用 ORDER BY 指定顺序进行排序
select name from greatestsORDER BY case when name ='B' then 1 when name ='A' then 2 when name ='D' t ...
- SQL按照指定顺序对字段进行排序
SqlServer按照指定顺序对字段进行排序 问题如下,在SqlServer有一个这样的SQL查询 SELECT *FROM ProductWHERE ID IN ( 12490, 12494, 12 ...
- MySql查询结果按照指定顺序排序
Mysql这功能做的很好用啊!! 让查询结果按照指定顺序排序 --------------------------------------------------------------------- ...
- SQL按指定文字顺序进行排序(中文或数字等)
在有些情况下我们需要按指定顺序输出数据,比如选择了ID in(3,1,2,5,4)我们希望按这个3,1,2,5,4的顺序输出,这样只使用order by ID是无法实现的, 但是我们可以使用order ...
- SqlServer按照指定顺序对字段进行排序
最近的一个项目,使用存储过程对报表进行分析,其中有一些名称需要根据指定顺序显示,而其名称对应的编号并不是按照要求的顺序排列的.通过上网查找资料,发现sql 中的charindex函数可以帮助解决这个问 ...
- 【C#】 List按指定字段的给出的自定义顺序进行排序
#引言 有一个集合,对其进行排序,排序规则为:按对象中某个字段的特定顺序进行排序,比如:对象属性id,按照[4,2,5,1]的顺序排序: #代码: public class Foo { public ...
- 对JavaScript对象数组按指定属性和排序方向进行排序
引子 在以数据为中心的信息系统中,以表格形式展示数据是在常见不过的方式了.对数据进行排序是必不可少的功能.排序可以分为按单个字段排序和按多个字段不同排序方向排序.单字段排序局限性较大,不能满足用户对数 ...
- sort如何按指定的列排序·百家电脑学院
sort如何按指定的列排序·百家电脑学院 sort如何按指定的(9php.com)列排序 0000 27189 41925425065f ...
- laravel中跟据某个特定顺序去排序查出来的数据:FIND_IN_SET
//返回有顺序的客户id $customer_ids = $customer->bespeakTime($uid); $res = Customer::with('customer_indust ...
随机推荐
- angularJS1笔记-(2)-$watch方法监听变量的变化
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 更新ubuntu的源
什么是Ubuntu的软件源? 我们在使用Debian或者Ubuntu的apt-get工具来安装需要的软件时,其实就是从服务器获取需要安装的软件并把它安装在本地计算机的过程.所谓的软件源,就是我们获取软 ...
- (一)Jmeter 简单的录制
JMeter介绍 1.JMeter,一个100%的纯Java桌面应用,它是Apache组织的开放源代码项目,它是功能和性能测试的工具.JMeter可以用于测试静态或者动态资源的性能(文件.Servle ...
- 关闭SSD(固态硬盘)节能功能 提搞SSD性能
此方法可以缓解比如QQ聊天时能明显感觉到打字过程不连续,0.1s左右的间歇停顿,操作系统并不会锁死,系统突然停止响应,硬盘灯狂闪,鼠标指针成为圆圈,点什么都没反应,这种状况可能会持续1-2分钟, ...
- 2013成都网赛1010 hdu 4737 A Bit Fun
题意:定义f(i, j) = ai|ai+1|ai+2| ... | aj (| 指或运算),求有多少对f(i,j)<m.1 <= n <= 100000, 1 <= m &l ...
- LDA-Latent Dirichlet Allocation 学习笔记
以下内容主要基于<Latent Dirichlet Allocation>,JMLR-2003一文,另加入了一些自己的理解,刚开始了解,有不对的还请各位指正. LDA-Latent Dir ...
- c++11 线程的互斥量
c++11 线程的互斥量 为什么需要互斥量 在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源.这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同时(还没有打印完),别人刚好也在 ...
- linq 获取实体列表中的某个字段返回ilist<string>
var list = list.Select(t => t.Field<string>("列名")).ToList(); var list = list.Se ...
- MT【131】$a_{n+1}\cdot a_n=\dfrac 1n$
已知数列\(\{a_n\}\)满足\(a_1=1\),\(a_{n+1}\cdot a_n=\dfrac 1n\)(\(n\in\mathbb N^*\)). (1) 求证:\(\dfrac{a_{n ...
- R2学习记录
Setting up the Libevent library1.重写log行为 #include <event2/event.h> #include <stdio.h> st ...