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 相关文章推荐
一个程序下载的管理程序(四)
Oct 09 PHP
PHP 七大优势分析
Jun 23 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
Apr 15 PHP
php的memcached客户端memcached
Jun 14 PHP
php入门学习知识点五 关于php数组的几个基本操作
Jul 14 PHP
php实现Mysql简易操作类
Oct 11 PHP
标准版Eclipse搭建PHP环境的详细步骤
Nov 18 PHP
CodeIgniter分页类pagination使用方法示例
Mar 28 PHP
PHP使用自定义方法实现数组合并示例
Jul 07 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
Jul 18 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
详解PHP变量传值赋值和引用赋值变量销毁
Mar 23 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教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
php网页病毒清除类
2014/12/08 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
javascript定义函数的方法
2010/12/06 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
DIV外区域Click后关闭DIV的实现代码
2011/12/21 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python学习笔记:字典的使用示例详解
2014/06/13 Python
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
PHP面试题及答案一
2012/06/18 面试题
护理专业毕业生自我鉴定
2013/10/08 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
写给学生的新学期寄语
2014/01/18 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
平遥古城导游词
2015/02/03 职场文书
后勤工作个人总结
2015/02/28 职场文书
“爱眼护眼,提前预防近视”倡议书3篇
2019/10/30 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js