深入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&amp;&amp;mysql)二
Oct 09 PHP
第一节--面向对象编程
Nov 16 PHP
PHP的分页功能
Mar 21 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
file_get_contents(&quot;php://input&quot;, &quot;r&quot;)实例介绍
Jul 01 PHP
php中strtotime函数用法详解
Nov 15 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
Jan 07 PHP
php图片添加文字水印实现代码
Mar 15 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
Mar 18 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 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 引用(&amp;)详解
2009/11/20 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
js Function类型
2011/12/04 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
js数组依据下标删除元素
2015/04/14 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
AngularJs定制样式插入到ueditor中的问题小结
2016/08/01 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
详解如何在react中搭建d3力导向图
2018/01/12 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
对python过滤器和lambda函数的用法详解
2019/01/21 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
伊莱克斯(Electrolux)俄罗斯网上商店:瑞典家用电器品牌
2021/01/23 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
运动会方阵解说词
2014/02/12 职场文书
厨房管理计划书
2014/04/27 职场文书
扬尘污染防治方案
2014/06/15 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
2016年教师党员公开承诺书
2016/03/24 职场文书
python实现简单的名片管理系统
2021/04/26 Python
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis