深入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 session_start()问题解疑(详细介绍)
Jul 05 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 PHP
非常重要的php正则表达式详解
Jan 04 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
Apr 02 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
php 基础函数
Feb 10 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 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
Function eregi is deprecated (解决方法)
2013/06/21 PHP
php foreach循环中使用引用的问题
2013/11/06 PHP
php检测文件编码的方法示例
2014/04/25 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
[JS]点出统计器
2020/10/11 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
jQuery 渐变下拉菜单
2009/12/15 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
IE8下Jquery获取select选中的值post到后台报错问题
2014/07/02 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
JavaScript函数内部属性和函数方法实例详解
2016/03/17 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
js实现淡入淡出轮播切换功能
2017/01/13 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
小结Python用fork来创建子进程注意事项
2014/07/03 Python
Python编程中的for循环语句学习教程
2015/10/14 Python
Python Socket使用实例
2017/12/18 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
python的debug实用工具 pdb详解
2019/07/12 Python
Python单元测试与测试用例简析
2019/11/09 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
优纳科技软件测试面试题
2012/05/15 面试题
营业员演讲稿
2013/12/30 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书