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和ACCESS写聊天室(三)
Oct 09 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
Oct 29 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
PHP页面转UTF-8中文编码乱码的解决办法
Oct 20 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
PHP的PDO错误与错误处理
Jan 27 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
Mar 27 PHP
为你的 Laravel 验证器加上多验证场景的实现
Apr 07 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
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
理解Javascript的动态语言特性
2015/06/17 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
node获取客户端ip功能简单示例
2019/08/24 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
node实现mock-plugin中间件的方法
2019/12/25 Javascript
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
详解numpy.ndarray.reshape()函数的参数问题
2020/10/13 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
请解释一下webService? 如何用.net实现webService
2014/06/09 面试题
总经理岗位职责
2013/11/09 职场文书
中学实习教师自我鉴定
2013/12/12 职场文书
护士辞职信模板
2014/01/20 职场文书
调研座谈会发言材料
2014/08/23 职场文书
小学德育工作总结2015
2015/05/12 职场文书
首都博物馆观后感
2015/06/05 职场文书
业务员管理制度范本
2015/08/06 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS