您当前的位置: 首页 > 网站编程 > PHP教程 > PHP 二维数组根据某个字段排序的具体实现

PHP 二维数组根据某个字段排序的具体实现

作者:不详 来源:网络 发布时间: 2014-07-30 09:25 点击:
本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个要求的时候就不是 ORDER BY 能解决的问题了。因此

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

  */
分享到:
本文"PHP 二维数组根据某个字段排序的具体实现"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4