2012-09-10 34 views
0

我需要按降序排列保持原有指标进行排序2维数组:排序2维数组按降序排列保持原来的指标

$arr = array(); 

for ($i=0; $i<5; $i++) { 
    $arr[] = array(rand(0,5), rand(10,100)); 
} 

的结果必须是这样的:

[0] => array(5, 100) 
[1] => array(5, 90) 
[2] => array(5, 35) 
[3] => array(4, 10) 
[4] => array(3, 15) 

因此,首先,数组相对于第一列进行排序,然后,第二列对第二列进行排序。

函数arsort与向量一起使用,如果我理解正确的话。

我该如何解决这个问题?

回答

2

参见http://docs.php.net/uasort

例如,

<?php 
$arr = array(
    'A'=>array(5, 100), 
    'B'=>array(4, 10), 
    'C'=>array(5, 35), 
    'D'=>array(3, 15), 
    'E'=>array(5, 90) 
); 

uasort($arr, function($a, $b) { 
    if ($a[0] < $b[0]) return 1; 
    else if ($a[0] > $b[0]) return -1; 
    else if ($a[1] < $b[1]) return 1; 
    else if ($a[1] > $b[1]) return -1; 
    else return 0; 
}); 

foreach($arr as $k=>$v) { 
    echo $k,'=', join(', ', $v), "\n"; 
} 

打印

A=5, 100 
E=5, 90 
C=5, 35 
B=4, 10 
D=3, 15