例如:

 //原始数组是这样的,希望能够按照第二维中的run_date升序或者降序进行排序:
$arr=array(
0=>array(
'run_date'=>'2017-11-21',
'count'=>'5'
),
1=>array(
'run_date'=>'2017-11-20',
'count'=>'10'
),
2=>array(
'run_date'=>'2017-11-22',
'count'=>'10'
)
);
//希望得到:
$arr=array(
0=>array(
'run_date'=>'2017-11-20',
'count'=>'5'
),
1=>array(
'run_date'=>'2017-11-21',
'count'=>'10'
),
2=>array(
'run_date'=>'2017-11-22',
'count'=>'10'
)
);

当然,用循环遍历是可以解决的,但是还是觉得效率有点低,这里有另外一个解决方案,是使用两个PHP提供的函数:

array_column array_multisort

还是上面的数组:
//先用array_column 多维数组按照纵向(列)取出

$date = array_column($arr, 'run_date');

//上面得到的结果:array(0=>'2017-11-21',1=>'2017-11-20',3=>'2017-11-22')

//再用array_multisort  结合array_column得到的结果对$arr进行排序

array_multisort($date,SORT_ASC,$arr);

//最终的结果:
$arr=array(
0=>array(
'run_date'=>'2017-11-20',
'count'=>'5'
),
1=>array(
'run_date'=>'2017-11-21',
'count'=>'10'
),
2=>array(
'run_date'=>'2017-11-22',
'count'=>'10'
)
);

附:

1、array_column 参考我之前的博客 http://www.cnblogs.com/Steven-shi/p/5897745.html

2、array_multisort array_multisort() 函数对多个数组或多维数组进行排序,可以用来一次对多个PHP二维数组排序进行排序,或者根据某一维或多维对多维数组进行排序

参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

SORT_ASC - 默认,按升序排列。(A-Z)
SORT_DESC - 按降序排列。(Z-A)
随后可以指定排序的类型:

SORT_REGULAR - 默认。将每一项按常规顺序排列。
SORT_NUMERIC - 将每一项按数字顺序排列。
SORT_STRING - 将每一项按字母顺序排列。
array_multisort(array1,sorting order,sorting type,array2,array3...)
array1 : 必需。规定输入的数组。

sorting order : 可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。

sorting type : 可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。

array2 : 可选。规定输入的数组。

array3 : 可选。规定输入的数组。

注释:字符串键名将被保留,但是数字键将被重新索引,从 0 开始,并以 1 递增。

注释:您可以在每个数组后设置排序顺序和排序类型。如果没有设置,每个数组参数会使用默认值。

PHP二维数组排序是按照第一个数组进行排序,并且调整后面的顺序。像这样的数组:

array( 'id' => array(1,3,2), 'data'=>array('a','c','b'))

只要按照id进行多维排序,就可以了。但是很多时候,我们构造出的数组是这样的:

array( array('id'=>1,'data'=>'a'), array('id'=>3,'data'=>'c'), array('id'=>2,'data'=>'b') );

PHP二维数组排序的元素是按行排列的,需要按其中的一列进行排序。PHP好像也没提供类似矩阵转置的函数,所以不能直接使用array_multisort进行多维排序。不过只需要先把排序的列抽取出来,作为第一个参数传给array_multisort即可

PHP将二位数组按照第二维的某个元素的值进行排序的更多相关文章

  1. java中Arrays.sort()对二位数组进行排序

    int [][]a = new int [5][2]; //定义一个二维数组,其中所包含的一维数组具有两个元素 对于一个已定义的二位数组a经行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升 ...

  2. C++ 出现bug :二位数组的操作运算,求非对角线的元素的和

    编写一个通用程序,求出二位数组(行数和列数必须相等)的非对角线的元素之和,试建立类MATRIX完成上述功能 #include<iostream> using namespace std; ...

  3. PHP 之二位数组根据某个字段排序封装

    /** * @param $array * @param $keys * @param string $sort * @return array */ function arraySort($arra ...

  4. 《Javascript权威指南》学习笔记之十二:数组、多维数组和符合数组(哈希映射)

    Array(数组)是JavaScript中较为复杂的数据类型,同Java.C#.VB等程序语言的数组相比.Javascript数组中的元素不必为同样的数据类型,能够在数组每一个元素上混合使用数字.日期 ...

  5. C++ 二位数组做参数传递

    指针的强大功能,,,,简直牛逼!!! #include<iostream> #include<cstdio> #include<map> using namespa ...

  6. [C++]指针/指针数组/数组指针/多维指针/单值指针/多值指针

    int main(){ //单值指针(指向单个值得指针,类同普通变量) int *px = new int; *px = 100; printf("%d",*px); delete ...

  7. C# 一维数组 二位数组 多维数组

    什么是数组? 数组是一组变量,就是把一些变量串在一起,放在一块. 数组的作用? 假设有一堆变量,每个变量都有一些程序,那么这堆程序放在一起  程序就会混乱,处理起来有些麻烦,那么数组就是把这些变量放在 ...

  8. PHP二位数组/多维数组 根据某个键值排序

    $arr[$i]['FirstName'] = $d_first_name;$arr[$i]['MiddleName'] = $d_middle_name;$arr[$i]['LastName'] = ...

  9. c语言 函数返回二位数组 函数参数为二维数组

    通过typedef可以简单实现.也可以直接写. 写了两个简单的矩阵操作的函数简单示例. #include <stdio.h> #include <stdlib.h> const ...

随机推荐

  1. Dubbo与Zookeeper、Spring整合使用 maven+springmvc+dubbo+zookeeper

    为什么要用dubbo?   还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm   http://dubbo.io/   一般 nginx+tomcat  | - ...

  2. mysql二:库操作

    一.系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等 performance_schema: My ...

  3. mysql四-2:多表查询

    一.介绍 本节主题: 多表连接查询 复合条件连接查询 子查询 准备表: #建表 create table department( id int, name ) ); create table empl ...

  4. 【linux学习笔记】began,每次玩这个都特别着迷

    胡乱的安装,通过虚拟机,从DVD加载开始,当然网上有大段的装机教程,装了两个Linux发行版,一个是centos7,一个是ubuntu18.04. 分区那些事: 因为处于学习阶段,所以总是因为分区问题 ...

  5. Vue基础知识之vue-resource和axios

    Vue基础知识之vue-resource和axios  原文链接:http://www.cnblogs.com/Juphy/p/7073027.html vue-resource Vue.js是数据驱 ...

  6. Android 第三方类库简单使用之EventBus

    Android 第三方类库之EventBus 1 PS 工欲善其事必先利其器. Eventbus也是一款在开发中常用的利器 这篇也对EventBus的简单介绍和使用,与之前个xutils介绍的级别一样 ...

  7. 使用weinre调试Web应用及PhoneGap应用

    Web开发者经常使用Firefox的firebug或者Chrome的开发人员工具进行Web调试,包括针对JavaScript,DOM元素和CSS样式的调试.但是,当我们期望为移动Web站点或应用进行调 ...

  8. 修改mysql编码方式

    第一种:     通过mysql命令行修改: 1)首先查看数据库字符编码,命令为: show variables like’collation_%’; show variables like’char ...

  9. xshell里的一些配色方案

    只需要把下面的代码复制到记事本中,保存为xcs文件格式,然后在xshell中导入选中就可以换配色方案了,可以自己修改下面的代码 [ubuntu]text(bold)=ffffffmagenta(bol ...

  10. Asterisk 对wav格式的支持

    经过测试wav格式文件仅支持PCM 8000kHz 16bit 单声道,非常蛋疼的一个原因,排查了好久! 关于C#支持的一些格式(Mono 单声道 .Stereo 立体声道) // Standard ...