php多维数组排序的方法

问题源自德问上的一个问答:http://www.dewen.org/q/4352

代码如下:

<?php
$array = array(
'0' => array('3', 'one'),
'1' => array('101', 'two'),
'2' => array('12', 'three'),
'3' => array('13', 'four'),
'4' => array('1', 'five'),
'5' => array('3', 'six'),
);

/*方法一:使用的是uasort()函数,而不是usort()函数,区别在于,uasort()会保持原来的索引,usort()会重建索引。*/
function cmp($a, $b){  
    if($a[0] == $b[0]){  
        return 0;  
    }  
    return($a[0] < $b[0]) ? -1 : 1;  
}  

uasort($array,"cmp");  

print_r($array);

echo "<br/>**********************<br/>";

/*方法二: 使用array_multisort*/
 
foreach ($array as $key=>$value){
    $first[$key] = $value[0];
    $second[$key] = $value[1];
}
 
array_multisort($first,SORT_NUMERIC,SORT_ASC,$second,SORT_STRING,SORT_ASC,$array);
print_r($array);
/*
排序顺序标志:

SORT_ASC – 按照上升顺序排序
SORT_DESC – 按照下降顺序排序

排序类型标志:

SORT_REGULAR – 将项目按照通常方法比较
SORT_NUMERIC – 将项目按照数值比较
SORT_STRING – 将项目按照字符串比较
*/

参考:http://www.phpiask.com/?p=80

posted @ 2012-08-14 14:40  令狐葱★  阅读(198)  评论(0编辑  收藏  举报