我需要按降序排列二维数组,保留原始索引:
$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
适用于向量。
我该如何解决这个问题?
答案 0 :(得分:2)
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