2012-09-10 51 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