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 相关文章推荐
PHP4实际应用经验篇(7)
Oct 09 PHP
file_get_contents获取不到网页内容的解决方法
Mar 07 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
浅谈thinkphp的实例化模型
Jan 04 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
php自动给网址加上链接的方法
Jun 02 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
PHP二维索引数组的遍历实例分析【2种方式】
Jun 24 PHP
laravel 实现上传图片到本地和前台访问示例
Oct 21 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三层结构(上) 简单三层结构
2010/07/04 PHP
PHP 事件机制(2)
2011/03/23 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
PHP开启opcache提升代码性能
2015/04/26 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
AngularJS 让人爱不释手的八种功能
2016/03/23 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
ionic2.0双击返回键退出应用
2019/09/17 Javascript
Python高效编程技巧
2013/01/07 Python
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
python中栈的原理及实现方法示例
2019/11/27 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
电脑教师的教学自我评价
2013/11/26 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
三方协议书
2015/01/27 职场文书
证婚人致辞精选
2015/07/28 职场文书
2019中小学生安全过暑期倡议书
2019/06/24 职场文书
浅谈Redis中的RDB快照
2021/06/29 Redis
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python
muduo TcpServer模块源码分析
2022/04/26 Redis