在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. [CF438E] 小朋友和二叉树

    Description 给定一个整数集合 \(c\),对于每个 \(i\in[1,m]\),求有多少种不同的带点权的二叉树使得这棵树点权和为 \(i\) 并且顶点的点权全部在集合 \(c\) 中.\( ...

  2. loadrunner:Action.c(4): Error -27796: Failed to connect to server "192.168.66.3:8080": [10060] Connection timed out

    Action.c(4): Error -27796: Failed to connect to server "192.168.66.3:8080": [10060] Connec ...

  3. Gradle学习笔记(1)创建简单的Java项目

      Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具.它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.当前 ...

  4. c# 生成验证码图片

    /// <summary> /// 生成验证码图片 /// </summary> /// <returns></returns> public byte ...

  5. [android] 手机卫士关闭自动更新

    保存数据的四种方式,网络,广播提供者,SharedPreferences,数据库 获取SharedPreferences对象,通过getSharedPreferences()方法,参数:名称,模式 例 ...

  6. Intellij Idea乱码解决方案

    使用Intellij Idea经常遇到的三种乱码问题: 1.工程代码乱码 2.main方法运行,控制台乱码 3.tomcat运行,控制台乱码 解决方案: 1.工程代码乱码 Settings > ...

  7. 【Java POI】1、Java POI的使用

    很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告.有时,一个应用程序甚至希望将Excel文件作为输入数据.例如,一个公司开发的应用程序将财务部门需要所有输出生成自己的Ex ...

  8. csharp: read system DSN configured get Driver Names on windows

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. vue.js及项目实战[笔记]— 01 vue.js

    一. vue基础 1. 历史介绍 angular 09年,年份较早,一开始大家是拒绝的 react 2013年,用户体验较好,直接拉到一堆粉丝 vue 2014年,用户体验较好 前端框架与库的区别 j ...

  10. python总结(更新中)

    1 python函数中的参数传递(注意可变和不可变传递) 可更改(mutable)与不可更改(immutable)对象 在 python 中,strings, tuples, 和 numbers 是不 ...