按降序排列二维数组,保留原始索引

时间:2012-09-10 09:41:08

标签: php arrays sorting

我需要按降序排列二维数组,保留原始索引:

$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)

因此,首先,数组按照第1列进行排序,然后按照第2列进行排序。

如果我理解正确的话,函数arsort适用于向量。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

请参阅http://docs.php.net/uasort

e.g。

<?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