深入array multisort排序原理的详解


Posted in PHP onJune 18, 2013
<?php
$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);
?>

<?php
$a = array(1,2,3);
$b = array(3);
// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($a, $b, $data);//数组一维个数不同
var_dump( $data);
?>

上面这个测试代码提示数组不一致的个数
<b>Warning</b>: array_multisort(): Array sizes are inconsistent in <b>G:\www\test\index.php</b> on line <b>15</b><br/>
再看
<?php
$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, 3, 4,4);//二维个数不同
?>

<?php
$a = array(11,2,3,4,5,6);
$b = array(3,3,3,3,3,3);
//从结果中看到对应11的array(67,7,3,4,4)按相同顺序出现了;
// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($a, $b, $data);
var_dump( $a,$data);
?>

从上面的结果可以得知:
数组参数必须有相同的一维个数;
然后每个数组的对应位置(注意不是相同key,而是从自然位置对应着,如$a(1=>4),对应$b(99=>4) 的4,因为它们的位置都是第一个,而非key(1,99)的对应关系),对应位置中的值就像穿在一个个互相平等竹杆上一样,穿在上面的其中一个值需要调整位置时,就会导致同一"竹杆"上的其它值出现垂直移动.
 
类:
$a           $b          $c
4=>7    8=>10       '999' => 0
9=>9   0=>1       999=>9
0=> 2   9=> 3    9999=>7
----------------------
如果出现按$a的7与9对换,也就会带动$b的10与1对换 $c的0与9对换.
所以关系就像上面的三个数组,同色的在同一"阵线上",其中一个换,大家要一起换位置.
PHP 相关文章推荐
通过对php一些服务器端特性的配置加强php的安全
Oct 09 PHP
真正面向对象编程:PHP5.01发布
Oct 09 PHP
PHP&amp;MYSQL服务器配置说明
Oct 09 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
Jun 08 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
PHP两种去掉数组重复值的方法比较
Jun 19 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
Apr 09 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 PHP
解析PHP工厂模式的好处
Jun 18 #PHP
PHP实现邮件群发的源码
Jun 18 #PHP
解析PHP跨站刷票的实现代码
Jun 18 #PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 #PHP
360通用php防护代码(使用操作详解)
Jun 18 #PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 #PHP
解析PHP计算页面执行时间的实现代码
Jun 18 #PHP
You might like
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
PHP Curl出现403错误的解决办法
2014/05/29 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
PHP静态成员变量
2017/02/14 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
JavaScript 基础篇(一)
2012/03/30 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
关于Vue.nextTick()的正确使用方法浅析
2017/08/25 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
使用Python来编写HTTP服务器的超级指南
2016/02/18 Python
python代码实现ID3决策树算法
2017/12/20 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
python区块及区块链的开发详解
2019/07/03 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
快速查找Python安装路径方法
2020/02/06 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
自考毕业生自我鉴定
2013/11/04 职场文书
面试感谢信范文
2015/01/22 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers