PHP 多维数组排序(usort,uasort)


Posted in PHP onJune 30, 2010

数字索引数组:
bool usort( array &$array, callback $cmp_function )
usort函数对指定数组(参数1)按指定方式(参数2)进行排序。
当我们想对多维数组进行排序时,多维数组的每个元素又是一数组类型,而两个数组如何比较大小?这是需要用户自定义的(是按每个数组的第一元素比较还是…)。

<?php 
//定义多维数组 
$a = array( 
array("sky", "blue"), 
array("apple", "red"), 
array("tree", "green")); 
//自定义数组比较函数,按数组的第二个元素进行比较。 
function my_compare($a, $b) { 
if ($a[1] < $b[1]) 
return -1; 
else if ($a[1] == $b[1]) 
return 0; 
else 
return 1; 
} 
//排序 
usort($a, 'my_compare'); 
//输出结果 
foreach($a as $elem) { 
echo "$elem[0] : $elem[1]<br />"; 
} ?>

结果为:
sky : blue 
tree : green 
apple : red

关联数组:
bool uasort(array &$array, callback $cmp_function)
bool uksort(array &$array, callback $cmp_function)

uasort, uksort用法与usort相同,其中uasort()对关联数组的值(value)进行排序,uksort()对关联数组的关键字(key)进行排序。

<?php 
$a = array( 
'Sunday' => array(0,'7th'), 
'Friday' => array(5,'5th'), 
'Tuesday'=> array(2,'2nd')); function my_compare($a, $b) { 
if ($a[1] < $b[1]) 
return -1; 
else if ($a[1] == $b[1]) 
return 0; 
else 
return 1; 
} 
//按$a数组的值的第二个元素(7th,5th,2nd)进行排序 
uasort($a, 'my_compare'); 
foreach($a as $key => $value) { 
echo "$key : $value[0] $value[1]<br />"; 
} 
//按$a数组的关键字的第二个字符(r,u,u)进行排序 
uksort($a, 'my_compare'); 
foreach($a as $key => $value) { 
echo "$key : $value[0] $value[1]<br />"; 
} 
?>

结果为:

Tuesday : 2 2nd
Friday : 5 5th
Sunday : 0 7th
Friday : 5 5th
Sunday : 0 7th
Tuesday : 2 2nd

PHP 相关文章推荐
php中的实现trim函数代码
Mar 19 PHP
PHP防注入安全代码
Apr 09 PHP
PHP输出XML到页面的3种方法详解
Jun 06 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
destoon后台网站设置变成空白的解决方法
Jun 21 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
PHP生成树的方法
Jul 28 PHP
PHP接口并发测试的方法(推荐)
Dec 15 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
Yii框架响应组件用法实例分析
Sep 04 PHP
php和html的区别点详细总结
Sep 24 PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 #PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 #PHP
PHP 反向排序和随机排序代码
Jun 30 #PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 #PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
Jun 30 #PHP
PHP字符串处理的10个简单方法
Jun 30 #PHP
php flv视频时间获取函数
Jun 29 #PHP
You might like
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
extjs form textfield的隐藏方法
2008/12/29 Javascript
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
js表单验证实例讲解
2016/03/31 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
JSON生成Form表单的方法示例
2018/11/21 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
Python多线程编程(五):死锁的形成
2015/04/05 Python
Django中url的反向查询的方法
2018/03/14 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
2019/01/05 Python
使用Python实现牛顿法求极值
2020/02/10 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
Camille Jewelry官网:现代女性时尚首饰
2019/07/07 全球购物
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
移动通信行业实习自我鉴定
2013/09/28 职场文书
工作会议主持词
2014/03/17 职场文书
《春雨》教学反思
2014/04/24 职场文书
2014年教育培训工作总结
2014/12/08 职场文书
优秀班集体申报材料
2014/12/25 职场文书
教师个人年度总结
2015/02/11 职场文书
2015年工程部工作总结
2015/04/30 职场文书
行政申诉状范文
2015/05/20 职场文书
校园广播稿范文
2015/08/19 职场文书
大学学生会竞选稿
2015/11/19 职场文书