PHP二维数组如何根据某个字段排序
分享下PHP二维数组如何根据某个字段排序的方法。
从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。
本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。
要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。
这个要求就不是 ORDER BY 能解决的问题了。因此翻看 PHP手册查找到了如下方法,做此笔记。
代码:
<?php
/**
* 二维数组根据某个字段排序
* 功能:按照用户的年龄倒序排序
* @author ruxing.li
* @edit www.jbxue.com
*/
header('Content-Type:text/html;Charset=utf-8');
$arrUsers = array(
array(
'id' => 1,
'name' => '张三',
'age' => 25,
),
array(
'id' => 2,
'name' => '李四',
'age' => 23,
),
array(
'id' => 3,
'name' => '王五',
'age' => 40,
),
array(
'id' => 4,
'name' => '赵六',
'age' => 31,
),
array(
'id' => 5,
'name' => '黄七',
'age' => 20,
),
); $sort = array(
'direction' => 'SORT_DESC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
'field' => 'age', //排序字段
);
$arrSort = array();
foreach($arrUsers AS $uniqid => $row){
foreach($row AS $key=>$value){
$arrSort[$key][$uniqid] = $value;
}
}
if($sort['direction']){
array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arrUsers);
} var_dump($arrUsers); /*
输出结果: array (size=5)
0 =>
array (size=3)
'id' => int 5
'name' => string '黄七' (length=6)
'age' => int 20
1 =>
array (size=3)
'id' => int 2
'name' => string '李四' (length=6)
'age' => int 23
2 =>
array (size=3)
'id' => int 1
'name' => string '张三' (length=6)
'age' => int 25
3 =>
array (size=3)
'id' => int 4
'name' => string '赵六' (length=6)
'age' => int 31
4 =>
array (size=3)
'id' => int 3
'name' => string '王五' (length=6)
'age' => int 40 */
PHP二维数组如何根据某个字段排序的更多相关文章
- php 将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序
最近再写项目的时候,碰到一个问题:如何将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序:实在是想不到哪个php库中有哪个函数能实现,只能自己写一个了,将代码写出来后,发现自己的代码繁琐,并 ...
- php二维数组的某一字段 做分组统计
$country=array_column($order,'country');$countryGP=array_count_values($country);对二维数组的某一字段 做分组统计
- php对二维数组进行相关操作(排序、转换、去空白等)
php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04 这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...
- 一个有用的排序函数,array_multisort(),下面的一个用法是根据二维数组里的一个字段值的大小,对该二维数组进行重新排序
从二维数组$cashes中取出一列 'store_id'(二维数组中的每个一维数组都有的字段),按照这个的大小排序,对二维数组$caches里面的一维数组进行重新排序 实际应用如下 想让相同部门的排在 ...
- 二维数组按某个键值排序 FOR PHP
$arr=[ array( 'name'=>'小坏龙', 'age'=>28 ), array( 'name'=>'小坏龙2', 'age'=>14 ), array( 'na ...
- PHP二维数组按某个键值排序
$data=Array( [0] => Array ( [id] => 2 [user_id] => 14 ...
- php多维数组的指定单个字段排序
多维数组如何根据指定键值?比如现在有数组结构如下: ,,,,,'subject' => 'math'), 1 => array('name' => '3班','avgScore'=& ...
- merger_by_one 处理二维数组,根据里面某字段合并, 里面有的保留,有的求和~~
public function tt(){ $param = array( array ( 'hykno' => '2222222-CB', 'tcdk_fid' => '458B6D70 ...
- PHP:根据二维数组中的某个字段进行排序
首先了解下以下两个函数: 1.array_column() 返回输入数组中某个单一列的值. 2.array_multisort() 函数返回排序数组.您可以输入一个或多个数组.函数先对第一个数组进行排 ...
随机推荐
- maven command to create your application
How do I make my first Maven project? We are going to jump headlong into creating your first Maven p ...
- 翻译记忆软件-塔多思TRADO经典教程_2
Trados 中文简明教程Trados 中文简明教程1. 准备工作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
- Discuz常见小问题-如何快速安装和配置
下载PHPNOW 可以解压到本地的某个目录,最好不要有中文路径,然后查看Readme进行安装,双击Setup.cmd 安装结束之后,会要求输入一个初始化的密码,不要忘记,会自动弹出一个测试页面,可以测 ...
- CAD批量合并文件
要求:将整饰完成504幅单独的宗地图合并成一张总图,合并后,去掉其他要素,只保留毕合的权属线. 解决: 1.合并dwg文件,除了手工粘贴复制外,最先想到的是插入块,即用Insert命令插入,测试结果可 ...
- B/S与C/S的差别
前一段时间已经结束了C/S的学习,開始了B/S的旅程,那么为什么我们要学习这两个,这两个有什么差别呢?这些差别你知道多少呢? B/S结构.即Browser/Server(浏览器/server)结构.是 ...
- js 垃圾回收机制与内存管理
1.原理 js按照固定的时间间隔找到不在继续使用的变量,释放其占用的内存. 2.实现方式 (1)标记清除 垃圾收集器给存储在内存上的所有变量都加上标记: 之后,去掉环境中的变量以及被环境引用变量的标记 ...
- 关于CodeFirst的使用教程
请参考:http://www.cnblogs.com/lxblog/archive/2013/05/22/3092428.html 很全面实用,谢谢作者的付出!
- C# 的Timer 在javascript中的实现--基于Typescript
class Timer { //js 内置的timer对象 private _jsInnerTimerObj: any; private _enable: boolean; private _hand ...
- C++开发WPF,Step by Step
示例代码 使用C++来开发WPF,主要是如何在MFC(Win32)的窗口中Host WPF的Page.下面我就做个详细的介绍. 一.创建工程, 由于MFC的Wizard会生成很多用不到的代码,所以我准 ...
- 转:VC++线程同步-事件对象
这是整理孙鑫VC得到的关于线程同步方面的笔记. n 事件对象也属于内核对象,包含一个使用计数,一个用于指明该事件是一个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于 ...