php根据指定键排序,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;

}

【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)

随机推荐

Raspberry Pi 3 --- Kernel Building and Run in A New Version Kernal

ABSTRACT There are two main methods for building the kernel. You can build locally on a Raspberry Pi ...

AppStore审核

应用被拒分为两种:Binary Rejected 和 Metadata Rejected.前者需要重新上传应用并且重新排队,后者只需要修改信息,不需要重新上传应用. 1.应用内包含检查更新功能 iOS ...

一个ListBox的例子

1.向ListBox中放入其他控件 XAML:      function validate(){       var reg = new RegExp( ...

asp&period;net webform&sol;mvc导出Excel通用代码

最近将自己在项目中经常用到的excel导出方法分析如下,如有不妥之处望他人指出,如果有更好的方法希望展示出来互相学习. //导出事件 protected void btnexcel_Click(obj ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值