深入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 - Html Transfer Code
Oct 09 PHP
php intval的测试代码发现问题
Jul 27 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
PHP strtok()函数的优点分析
Mar 02 PHP
php class中self,parent,this的区别以及实例介绍
Apr 24 PHP
PHP中替换键名的简易方法示例详解
Jan 07 PHP
php循环创建目录示例分享(php创建多级目录)
Mar 04 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
Laravel框架自定义分页样式操作示例
Jan 26 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+javascript的日历控件
2009/11/19 PHP
基于php无限分类的深入理解
2013/06/02 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
js+css实现导航效果实例
2015/02/10 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
python发腾讯微博代码分享
2014/01/10 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
Python地图绘制实操详解
2019/03/04 Python
Django REST framework 如何实现内置访问频率控制
2019/07/23 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
python logging 日志的级别调整方式
2020/02/21 Python
python如何实现DES加密
2020/09/21 Python
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
鸿星尔克广告词
2014/03/21 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
敬业奉献模范事迹材料
2014/12/24 职场文书
小马王观后感
2015/06/11 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL
redis复制有可能碰到的问题汇总
2022/04/03 Redis