在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果;但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来对自己的想法进行实现。下面就讲述一下如何实现二维数组根据key进行排序。

实现方法:

  1. <?php
  2. /**
  3. * =======================================
  4. * Created by Zhihua_W.
  5. * Author: Zhihua_W
  6. * Date: 2016/11/26 0002
  7. * Time: 下午 2:43
  8. * Project: PHP开发小技巧
  9. * Power: 实现二维数组根据key进行排序
  10. * =======================================
  11. */
  12. /**
  13. * 二维数组排序
  14. * @param array $arr 需要排序的二维数组
  15. * @param string $keys 所根据排序的key
  16. * @param string $type 排序类型,desc、asc
  17. * @return array $new_array 排好序的结果
  18. */
  19. function array_sort($arr, $keys, $type = 'desc')
  20. {
  21. $key_value = $new_array = array();
  22. foreach ($arr as $k => $v) {
  23. $key_value[$k] = $v[$keys];
  24. }
  25. if ($type == 'asc') {
  26. asort($key_value);
  27. } else {
  28. arsort($key_value);
  29. }
  30. reset($key_value);
  31. foreach ($key_value as $k => $v) {
  32. $new_array[$k] = $arr[$k];
  33. }
  34. return $new_array;
  35. }
  36. $arr = array(
  37. array(
  38. 'name' => 'a',
  39. 'sex' => 'm',
  40. 'sort' => 5
  41. ),
  42. array(
  43. 'name' => 'c',
  44. 'sex' => 'm',
  45. 'sort' => 8
  46. ),
  47. array(
  48. 'name' => 'g',
  49. 'sex' => 'm',
  50. 'sort' => 3
  51. ),
  52. array(
  53. 'name' => 'e',
  54. 'sex' => 'w',
  55. 'sort' => 6
  56. ),
  57. array(
  58. 'name' => 'b',
  59. 'sex' => 'w',
  60. 'sort' => 2
  61. ),
  62. );
  63. //打印出原数组
  64. print_r($arr);
  65. //打印出排好序的数组
  66. print_r(array_sort($arr,'name'));
  67. ?>

通过打印出的结果我们就可以看到,数组根据“name”进行排序。

  1. //原数组
  2. Array
  3. (
  4. [0] => Array
  5. (
  6. [name] => a
  7. [sex] => m
  8. [sort] => 5
  9. )
  10. [1] => Array
  11. (
  12. [name] => c
  13. [sex] => m
  14. [sort] => 8
  15. )
  16. [2] => Array
  17. (
  18. [name] => g
  19. [sex] => m
  20. [sort] => 3
  21. )
  22. [3] => Array
  23. (
  24. [name] => e
  25. [sex] => w
  26. [sort] => 6
  27. )
  28. [4] => Array
  29. (
  30. [name] => b
  31. [sex] => w
  32. [sort] => 2
  33. )
  34. )
  35. //排序后数组
  36. Array
  37. (
  38. [2] => Array
  39. (
  40. [name] => g
  41. [sex] => m
  42. [sort] => 3
  43. )
  44. [3] => Array
  45. (
  46. [name] => e
  47. [sex] => w
  48. [sort] => 6
  49. )
  50. [1] => Array
  51. (
  52. [name] => c
  53. [sex] => m
  54. [sort] => 8
  55. )
  56. [4] => Array
  57. (
  58. [name] => b
  59. [sex] => w
  60. [sort] => 2
  61. )
  62. [0] => Array
  63. (
  64. [name] => a
  65. [sex] => m
  66. [sort] => 5
  67. )
  68. )
版权声明:转载时请标注http://blog.csdn.net/zhihua_w

PHP开发小技巧②—实现二维数组根据key进行排序的更多相关文章

  1. PHP开发小技巧③—实现多维数组转化为一维数组

    在平常的项目开发中我们多会用到让多维数组转化为一维数组的情况,但是很多Programmer不会将其进行转化,也有些没有想到很好的算法然后经过乱起八糟的运算方式将其勉强转化好,但是所写的程序代码冗余非常 ...

  2. Swift开发小技巧--扫描二维码,二维码的描边与锁定,设置扫描范围,二维码的生成(高清,无码,你懂得!)

    二维码的扫描,二维码的锁定与描边,二维码的扫描范围,二维码的生成(高清,无码,你懂得!),识别相册中的二维码 扫描二维码用到的三个重要对象的关系,如图: 1.懒加载各种类 // MARK: - 懒加载 ...

  3. C++ 性能小测 1 二维数组的遍历效率

    C++ 性能小测 1 二维数组的遍历效率 遍历二维数组时,常规思路是使用一个嵌套循环.一方面,由于 CPU 使用了分支预测技术,因此通常将循环次数最多循环的放在最内层.另一方面,由于二维数组是按行存储 ...

  4. PHP 二维数组根据某个字段排序

    二维数组根据某个字段排序有两种办法,一种是通过sort自己写代码,一种是直接用array_multisort排序函数 一. 手写arraysort PHP的一维数组排序函数: sort  对数组的值按 ...

  5. PHP 按二维数组的键值排序

    /** * 按二维数组的键值排序 * @param unknown $array 二维数组 * @param unknown $key 二维数组的键值 * @param string $order 升 ...

  6. PHP二维数组按某个字段排序

    //准备 二维数组 //按一个字段排序 foreach($rank as $key=>$val){ $dos[$key] = $val['timelength']; } array_multis ...

  7. 三重for循环实现对二维数组的按列排序(JavaScript)

    由C语言联想到的:三重for循环实现对二维数组的按列排序,并且牵扯到数据结构. 自己写的,水平有限,本文属于原创,可能存在错误,忘指正~ function circle() { var a = [ [ ...

  8. PHP 二维数组某个字段进行排序

    /** * @param $arrUsers * @return mixed *二维数组某个字段进行排序 */ function quick_sort($arrUsers) { $sort = arr ...

  9. Java一维与二维数组的拷贝与排序

    Java一维与二维数组的拷贝与排序 目录 Java一维与二维数组的拷贝与排序 Arrays.sort() 一维数组升序排序 二维数组按行升序排序 二维数组按列升序排序 Java中的数组 Java中数组 ...

随机推荐

  1. 你不知道的Linux(持续更新中)

    1.关于GNU.Linux.GNU/Linux三者的关系 GNU 项目创始于一九八四年,旨在开发一个类似 Unix ,且为自由软件的完整的操作系统: GNU 系统.(也可把GNU看成一个自由软件工程) ...

  2. js jq输入框中按回车触发提交事件,用户在页面输入后按回车(Enter键)进行

    js jq输入框中按回车触发提交事件,用户在页面输入后按回车(Enter键)进行 代码如下: <!DOCTYPE html> <html lang="en" xm ...

  3. c#实战开发:用.net core开发一个简单的Web以太坊钱包 (六)

    今天就来开发一个C# 版的简易钱包 先回顾以前的内容 c#实战开发:以太坊Geth 命令发布智能合约 (五) c#实战开发:以太坊Geth 常用命令 (四) c#实战开发:以太坊钱包快速同步区块和钱包 ...

  4. 关于 IdentityServer 部署到生产环境相关问题踩坑记录

    Idsr 定义了几种模式适用于不同的场景: // // 摘要: // OpenID Connect flows. public enum Flows { // // 摘要: // authorizat ...

  5. VB.NET 窗體操作

    Private Sub A1() '加载窗体 frm1.Show() End Sub Private Sub A2() '離開 Process.GetCurrentProcess().Kill() E ...

  6. Django Rest Framework之版本控制

    基本代码结构 settings.py: REST_FRAMEWORK = { 'DEFAULT_VERSION': 'v1', # 默认版本 'ALLOWED_VERSIONS': ['v1', 'v ...

  7. Python全栈学习_day005作业

    ,有如下变量(tu是个元祖),请实现要求的功能 tu = (, , {,,)}, ]) a. 讲述元祖的特性 b. 请问tu变量中的第一个元素 "alex" 是否可被修改? c. ...

  8. Django Rest framework 之 认证

    django rest framework 官网 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest fra ...

  9. Python 练习: 简单角色游戏程序

    要求: 1.创建三个游戏人物,分别是: 苍井井,女,18,初始战斗力1000 东尼木木,男,20,初始战斗力1800 波多多,女,19,初始战斗力2500 2.游戏场景,分别: 草丛战斗,消耗200战 ...

  10. loadsh常用函数

    此篇文章会记录常用的lodash函数 防抖函数:_.debounce() 创建一个去缓冲函数,该函数将自上次调用函数以来经过设置的等待毫秒后调用func. 去缓冲函数带有一个取消方法来取消延迟的fun ...