当前位置:首页 > PHP教程 > php数组 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-02-07 15:40:04 浏览: 评论:0 

从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条.

本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。

要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。

遇到这个要求的时候就不是 ORDER BY 能解决的问题了。因此翻看 PHP 手册查找到了如下方法,做此笔记。

废话少说,奉上代码,清单如下:

  1. <?php 
  2. /** 
  3. * 二维数组根据某个字段排序 
  4. * 功能:按照用户的年龄倒序排序 
  5. * @author ruxing.li 
  6. */ 
  7. header('Content-Type:text/html;Charset=utf-8'); 
  8. $arrUsers = array( 
  9. array( 
  10. 'id' => 1, 
  11. 'name' => '张三', 
  12. 'age' => 25, 
  13. ), 
  14. array( 
  15. 'id' => 2, 
  16. 'name' => '李四', 
  17. 'age' => 23, 
  18. ), 
  19. array( 
  20. 'id' => 3, 
  21. 'name' => '王五', 
  22. 'age' => 40, 
  23. ), 
  24. array( 
  25. 'id' => 4, 
  26. 'name' => '赵六', 
  27. 'age' => 31, 
  28. ), 
  29. array( 
  30. 'id' => 5, 
  31. 'name' => '黄七', 
  32. 'age' => 20, 
  33. ), 
  34. ); 
  35.  
  36.  
  37. $sort = array( 
  38. 'direction' => 'SORT_DESC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序 
  39. 'field' => 'age', //排序字段 
  40. ); 
  41. $arrSort = array(); 
  42. foreach($arrUsers AS $uniqid => $row){ 
  43. foreach($row AS $key=>$value){ 
  44. $arrSort[$key][$uniqid] = $value; 
  45. } 
  46. } 
  47. if($sort['direction']){ 
  48. array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arrUsers); 
  49. } 
  50.  
  51. var_dump($arrUsers); 
  52.  
  53. /* 
  54. 输出结果: 
  55.  
  56. array (size=5) 
  57. 0 => 
  58. array (size=3) 
  59. 'id' => int 5 
  60. 'name' => string '黄七' (length=6) 
  61. 'age' => int 20 
  62. 1 => 
  63. array (size=3) 
  64. 'id' => int 2 
  65. 'name' => string '李四' (length=6) 
  66. 'age' => int 23 
  67. 2 => 
  68. array (size=3) 
  69. 'id' => int 1 
  70. 'name' => string '张三' (length=6) 
  71. 'age' => int 25 
  72. 3 => 
  73. array (size=3) 
  74. 'id' => int 4 
  75. 'name' => string '赵六' (length=6) 
  76. 'age' => int 31 
  77. 4 => 
  78. array (size=3) 
  79. 'id' => int 3 
  80. 'name' => string '王五' (length=6) 
  81. 'age' => int 40 
  82.  
  83. */ 

Tags: PHP二维数组字段排序

分享到: