深入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 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
php 在线打包_支持子目录
Jun 28 PHP
php结合飞信 免费天气预报短信
May 07 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
PHP统计目录下的文件总数及代码行数(去除注释及空行)
Jan 17 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
php多个文件及图片上传实例详解
Nov 10 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
Linux下 php7安装redis的方法
Nov 01 PHP
Yii框架核心组件类实例详解
Aug 06 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
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
angularjs路由传值$routeParams详解
2020/09/05 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
使用flow来规范javascript的变量类型
2019/09/12 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
pandas中去除指定字符的实例
2018/05/18 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
Python configparser模块常用方法解析
2020/05/22 Python
python中pyqtgraph知识点总结
2021/01/26 Python
马来西亚网上购物:Youbeli
2018/03/30 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
结构和类有什么异同
2012/07/16 面试题
大学生护理专业自荐信
2013/10/03 职场文书
网站设计师的岗位职责
2013/11/21 职场文书
开办加工厂创业计划书
2014/01/03 职场文书
网络营销计划
2015/01/17 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
党员转正大会主持词
2015/07/02 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
Java如何实现树的同构?
2021/06/22 Java/Android
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers