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



*/

你可能感兴趣的:(二维数组)