深入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新手上路(十三)
Oct 09 PHP
破解.net程序(dll文件)编译和反编译方法
Jan 31 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
Jun 29 PHP
PHP批量检测并去除文件BOM头代码实例
May 08 PHP
yii操作session实例简介
Jul 31 PHP
php简单实现快速排序的方法
Apr 04 PHP
PHP文件上传类实例详解
Apr 08 PHP
Yii框架中sphinx索引配置方法解析
Oct 18 PHP
php之可变变量的实例详解
Sep 12 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
Aug 03 PHP
php使用curl伪造浏览器访问操作示例
Sep 30 PHP
php操作redis数据库常见方法实例总结
Feb 20 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
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
JavaScript 的继承
2011/10/01 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
基于JavaScript实现简单的随机抽奖小程序
2016/01/05 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
详解Nuxt.js部署及踩过的坑
2018/08/07 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
Python用GET方法上传文件
2015/03/10 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
django rest framework使用django-filter用法
2020/07/15 Python
Python实现哲学家就餐问题实例代码
2020/11/09 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
市场营销求职信范文
2014/02/21 职场文书
保护环境倡议书
2014/04/14 职场文书
关于安全演讲稿
2014/05/09 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
运动会演讲稿50字
2014/08/25 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
热情服务标语
2014/10/07 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
家装电话营销开场白
2015/05/29 职场文书
详解NodeJS模块化
2021/06/15 NodeJs