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 相关文章推荐
dedecms 制作模板中使用的全局标记图文教程
Mar 11 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
php广告加载类用法实例
Sep 23 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
php实用代码片段整理
Nov 12 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 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+APACHE实现用户论证的方法
2006/10/09 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
修改js confirm alert 提示框文字的简单实例
2016/06/10 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
深入学习nodejs中的async模块的使用方法
2017/07/12 NodeJs
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
js传递数组参数到后台controller的方法
2018/03/29 Javascript
vue-router的使用方法及含参数的配置方法
2018/11/13 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
Python3中FuzzyWuzzy库实例用法
2020/11/18 Python
Python实现区域填充的示例代码
2021/02/03 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
介绍一下Mysql的存储引擎
2015/02/12 面试题
家长给幼儿园的表扬信
2014/01/09 职场文书
新年晚会主持词
2014/03/24 职场文书
汽车专业求职信
2014/06/05 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书
python3 字符串str和bytes相互转换
2022/03/23 Python
设置IIS Express并发数
2022/07/07 Servers