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图片加中文水印实现代码分享
Oct 31 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
Zend Framework基于Command命令行建立ZF项目的方法
Feb 18 PHP
php验证码生成器
May 24 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
Apr 14 PHP
php+websocket 实现的聊天室功能详解
May 27 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
ecshop 订单确认中显示省市地址信息的方法
2010/03/15 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
拖拉表格的JS函数
2008/11/20 Javascript
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
jquery动画4.升级版遮罩效果的图片走廊--带自动运行效果
2012/08/24 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
python快速建立超简单的web服务器的实现方法
2018/02/17 Python
python线程中同步锁详解
2018/04/27 Python
使用Python和Prometheus跟踪天气的使用方法
2019/05/06 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
应聘医学检验人员自荐信
2013/09/27 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
2015年清明节活动总结
2015/02/09 职场文书
信息技术国培研修日志
2015/11/13 职场文书
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript
GPU服务器的多用户配置方法
2022/07/07 Servers