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

yipeiwu_com5年前PHP代码库
数字索引数组:
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基于递归算法解决兔子生兔子问题。分享给大家供大家参考,具体如下: 接到面试通知辗转反侧,一直在默念明天改如何介绍自己的项目经验等。 早早的起床,洗漱,把自己的总结的问...

php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法

说是已经有输出,用编辑器打,前面明明什么都没有,原来在使用AJAX的 时候,也出现过这种情况,后来,把这个PHP文件放到linux中打开,会发现,在文件的最前面,会出现“锘 ”这样的一个...

php session 错误

1. 错误提示 Warning: Cannot send session cookie - headers already sent Warning: Cannot send sessi...

PHP MemCached 高级缓存应用代码

Memcache常用方法 Memcache::add — 添加一个值,如果已经存在,则返回false Memcache::addServer — 添加一个可供使用的服务器地址 Memca...

谈PHP生成静态页面分析 模板+缓存+写文件

一、引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编...