0

我需要按降序对二维数组进行排序,以保持原始索引:

$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如果我理解正确,该函数适用于向量。

我该如何解决这个任务?

4

1 回答 1

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
于 2012-09-10T09:43:07.403 回答