深入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 相关文章推荐
一个简单的自动发送邮件系统(三)
Oct 09 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
PHP备份/还原MySQL数据库的代码
Jan 06 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
深入PHP购物车模块功能分析(函数讲解,附源码)
Jun 25 PHP
PHP以mysqli方式连接类完整代码实例
Jul 15 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
Mar 14 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
PHP环境搭建的详细步骤
Jun 30 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
Script的加载方法小结
2011/01/12 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
python重试装饰器示例
2014/02/11 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
python实现的汉诺塔算法示例
2019/10/23 Python
python3 实现调用串口功能
2019/12/26 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
学python爬虫能做什么
2020/07/29 Python
python try...finally...的实现方法
2020/11/25 Python
使用CSS实现阅读进度条
2017/02/27 HTML / CSS
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
实习医生自我评价
2013/09/22 职场文书
中专毕业生自我鉴定范文
2013/11/09 职场文书
计划生育标语
2014/06/23 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
MySQL池化框架学习接池自定义
2022/07/23 MySQL