PHP实现二维数组按某列进行排序的方法


Posted in PHP onNovember 18, 2016

本文实例讲述了PHP实现二维数组按某列进行排序的方法。分享给大家供大家参考,具体如下:

/*
* 二维数组 按某列排序
* array_multisort($arr1,$arr2)
* 手册 例子如下
*
*/
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
// 取得列的列表
foreach ($data as $key => $row) {
  $volume[$key] = $row['volume'];
  $edition[$key] = $row['edition'];
}
// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
/*************************************/
/* 从上面的例子不难看出,array_multisort()函数
* 是将每一个二维数组的列作为 一个参数进行排序
* 来达到整个数组的排序
*/
/*************************************/
function sigcol_arrsort($data,$col,$type=SORT_DESC){
  if(is_array($data)){
    $i=0;
    foreach($data as $k=>$v){
      if(key_exists($col,$v)){
        $arr[$i] = $v[$col];
        $i++;
      }else{
        continue;
      }
    }
  }else{
    return false;
  }
  array_multisort($arr,$type,$data);
  return $data;
}
print_r(sigcol_arrsort($data,'edition',SORT_DESC));
/*说白了 原理就是:
新数组  原二维数组
 2    array('volume' => 67, 'edition' => 2);
 1    array('volume' => 86, 'edition' => 1);
 6    array('volume' => 85, 'edition' => 6);
 2    array('volume' => 98, 'edition' => 2);
 6    array('volume' => 86, 'edition' => 6);
 7    array('volume' => 67, 'edition' => 7);
这两个数组的每一行都锁在一起,新数组一旦变动顺序,
那么就会连带每一行的二维数组也跟着变换顺序 ,即新数组为参照物
相当于查询子句中的 order by
*/

运行结果:

Array
(
  [0] => Array
    (
      [volume] => 67
      [edition] => 7
    )
  [1] => Array
    (
      [volume] => 85
      [edition] => 6
    )
  [2] => Array
    (
      [volume] => 86
      [edition] => 6
    )
  [3] => Array
    (
      [volume] => 67
      [edition] => 2
    )
  [4] => Array
    (
      [volume] => 98
      [edition] => 2
    )
  [5] => Array
    (
      [volume] => 86
      [edition] => 1
    )
)

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 强制性文件下载功能的函数代码(任意文件格式)
May 26 PHP
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
php strnatcmp()函数的用法总结
Nov 27 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
Yii框架表单模型和验证用法
May 20 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 PHP
Laravel服务容器绑定的几种方法总结
Jun 14 PHP
通过实例解析PHP数据类型转换方法
Jul 11 PHP
PHP二维数组去重实例分析
Nov 18 #PHP
浅谈php fopen下载远程文件的函数
Nov 18 #PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 #PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
Nov 18 #PHP
PHP屏蔽关键字实现方法
Nov 17 #PHP
php实现背景图上添加圆形logo图标的方法
Nov 17 #PHP
PHP解压ZIP文件到指定文件夹的方法
Nov 17 #PHP
You might like
APMServ使用说明
2006/10/23 PHP
apache rewrite_module模块使用教程
2008/01/10 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
mcrypt启用 加密以及解密过程详细解析
2013/08/07 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
Jquery遍历节点的方法小集
2014/01/22 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
2016/08/23 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
js中的闭包实例展示
2018/11/01 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
Python中的闭包详细介绍和实例
2014/11/21 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
python如何实现int函数的方法示例
2018/02/19 Python
Python应用库大全总结
2018/05/30 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python plt 利用subplot 实现在一张画布同时画多张图
2021/02/26 Python
公共艺术专业自荐信
2014/09/01 职场文书
党的群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL
Echarts如何重新渲染实例详解
2022/05/30 Javascript