在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. WebForm 【上传图片--添加水印】

      对图片添加水印,上传 <div> <asp:FileUpload ID="FileUpload1" runat="server" /> ...

  2. activeX

    对外接口和classid在idl文件中,接口功能实现在ctrl类中实现

  3. Web前端基础——jQuery(二)

    一.jQuery 中的常用函数 1) $.map(Array,fn); 对数组中的每个元素,都用fn进行处理,fn将处理后的结果返回,最后得到一个数组 //因为这些操作,没有与dom元素相关的,所以可 ...

  4. 【协议】1、tcp,http,socket协议介绍

    1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上. ...

  5. Liquibase使用入门

    1.LiquiBase简介 LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态.LiquiBase的主 ...

  6. springboot整合freemarker----一点小小的错误

    最近小弟正在学习springboot,没办法,现在微服务太火了.小弟也要顺应时代的潮流啊 :( 好了,废话不多说了!!!! 首先在springboot的pom.xml添加freemarker的依赖 & ...

  7. maven 如何依赖工程项目里面的 jar 包

    前言:现在有个 jar 包在私服和公共仓库里面都没有,需要自己将 jar 包放在工程里,然后让 maven 依赖. 这里举个栗子 项目路径: pom.xml 配置 <!--自定义查询组件的jar ...

  8. idea not found for the web module

    intellij  IDEA  的tomcat 配置项里面没有的app web:war exploded  没有配置/路径

  9. 2018-01-19 Xtext试用: 5步实现一个(中文)JVM语言

    续上文Xtext试用: 快速实现简单领域专用语言(DSL). 基于官方教程: Five simple steps to your JVM language 达成如下语言: 它被Quan6JvmMode ...

  10. vue.js及项目实战[笔记]— 02 vue.js基础

    一. 基础 1. 注册全局组件 应用场景:多出使用的公共性能组件,就可以注册成全局组件,减少冗余代码 全局APIVue.component('组件名','组件对象') 2.附加功能:过滤器&监 ...