PHP 二维数组根据某个字段排序的具体实现 |
本文标签:PHP,二维数组,排序 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求 。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条 。 遇到这个要求的时候就不是 ORDER BY 能解决的问题了 。因此翻看 PHP 手册查找到了如下方法,做此笔记 。 废话少说,奉上代码,清单如下: 复制代码 代码如下: <?php /** * 二维数组根据某个字段排序 * 功能:按照用户的年龄倒序排序 * @author ruxing.li */ 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 */ |