php 根据指定的键对多维数组进行排序
根据指定的键对多维数组排序,可以按照多个键排序
我们通常有一些多维数组需要排序:
$guys = array(
array(
'name' => 'jake',
'score' => 80,
'grade' => 'A'
),
array(
'name' => 'jin',
'score' => 70,
'grade' => 'A'
),
array(
'name' => 'john',
'score' => 80,
'grade' => 'A'
),
array(
'name' => 'ben',
'score' => 20,
'grade' => 'B'
)
);
例如我们想按成绩倒序排列,如果成绩相同就按名字的升序排列。
我们就可以用下面这个函数进行排序:
如果仅按照score排序:
$rows = list_orderByMultiCols($rows, array('score' => 'SORT_DESC'));
如果仅按照score,name排序:
$rows = list_orderByMultiCols($rows, array('score' => 'SORT_DESC', 'name' => 'SORT_ASC'));
其中用到了array_multisort函数:
他的排序方式有:SORT_ASC 升序,SORT_DESC 倒序
具体函数代码如下:
/*
* @param array $rowset 要排序的数组/行集
* @param array $args 排序的键
*
* @return array 排序后的数组
*/
function list_orderByMultiCols($rowset, $args)
{
$orderArray = array();
$orderRule = ''; foreach ($args as $orderField => $orderDir)
{
foreach ($rowset as $offset => $row)
{
$orderArray[$orderField][$offset] = $row[$orderField];
}
$orderRule .= '$orderArray[\'' . $orderField . '\'], ' . $orderDir . ', ';
} if (empty($orderArray) || empty($orderRule))
{
return $rowset;
}
eval('array_multisort(' . $orderRule . '$rowset);'); return $rowset;
}
php 根据指定的键对多维数组进行排序的更多相关文章
- 【CodeBase】通过层级键在多维数组中获取目标值
通过层级键在多维数组中获取目标值 /* *Author : @YunGaZeon *Date : 2017.08.09 *param data : Data Array *param keys : K ...
- PHP array_multisort—对多个数组或多维数组进行排序
PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以 ...
- array_multisort—对多个数组或多维数组进行排序
From: http://www.cnblogs.com/lwbqqyumidi/archive/2013/01/31/2887188.html PHP中array_multisort可以用来一次对多 ...
- PHP数组函数 array_multisort() ----对多个数组或多维数组进行排序
PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以 ...
- array_multisort函数,以及多维数组下排序的应用,并与usort函数对比
以前比较少用这个函数,大部分自己接触的业务里,处理稍微大一些的数组的时候几乎都是从db里取出来的,在db里就order by了. 最近倒是用了次,这个函数用来排序很强大,有点类似于sql中的order ...
- 代码分享:php对二维数组进行排序
发布:net/PHP编程 编辑:thebaby 2013-06-28 13:12:54 [大 中 小] 转自:http://www.jbxue.com/article/9991.html本文介 ...
- java中二维数组的排序
首先定义一个5X8的二维数组,然后使用随机数填充满.借助Arrays的方法对二维数组进行排序.参考思路:先把二维数组使用System.arraycopy进行数组复制到一个一维数组然后使用sort进行排 ...
- php 二维数组自定义排序
eg1:只根据一个规则进行排序,比如我下面的数组是一组满减折扣的信息,我要按照满减的金额从小到大排序 代码: <?php $arr =[ ["amount"=> 60, ...
- Java 二维数组,排序、切换顺序,查表法二进制十进制,这班查找、排序(冒泡、选择)、遍历,获取最大小值(4)
Java 二维数组,排序.切换顺序,查表法二进制十进制,折半查找.排序(冒泡.选择).遍历,获取最大小值(4)
随机推荐
- Linux下常用压缩格式的压缩与解压方法
.tar 解包: tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------------- ...
- 创建数据库时报"FILESTREAM 功能被禁用"
问题,创建含有FileStream数据库时报"FILESTREAM 功能被禁用" 解决方式 修改数据库属性 打开管理配置工具,右键打开sql server的属性,查看FILESTR ...
- UVa 10120 - Gift?!
题目大意 美丽的村庄里有一条河,N个石头被放置在一条直线上,从左岸到右岸编号依次为1,2,...N.两个相邻的石头之间恰好是一米,左岸到第一个石头的距离也是一米,第N个石头到右岸同样是一米.礼物被放置 ...
- Win7下安装双系统Centos,并修复Centos引导加载程序安装在U盘上的问题
1.使用U盘安装Centos时,磁盘分区划分要注意:系统(包含Win7)只能4个主分区,所以只能在删除一个主分区或者在扩展分区的空闲分区内建立目录. 2.Centos在安装步骤的最后,引导加载程序的选 ...
- nginx+tomcat集群配置(1)---根目录设定和多后端分发配置
前言: 对于javaer而言, nginx+tomcat集群配置, 已然成了web应用部署的主流. 大公司如此, 小公司亦然. 对于个人开发者而言, 资源有限, 往往多个web应用混部于一台服务器(云 ...
- 增加mvc:resources后访问不了注解配置的controller的问题
刚开始没有配置mvc:resourcescontroller能够正确访问,但是由于web.xml使用/拦截了所有的请求,所以静态资源访问不上增加mvc:resources之后,静态资源是能访问上了,但 ...
- tyvj1017 - 冗余关系 ——并查集
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1017 并查集 #include <cstdio> #include <cstdlib& ...
- 转:db2 iptables相关用法(2)
Centos 6 iptables 配置 Ben 2011/12/24 [root@localhost ben.liu]# service iptables status Table: filter ...
- HTML DOM部分---document对象;
<style type="text/css"> #d3{ color:red} </style> </head> <body> &l ...
- POJ-1655 Balancing Act
题目大意:一棵n个节点的树,找出最大子树最小的节点. 题目分析:过程类似求重心. 代码如下: # include<iostream> # include<cstdio> # i ...