我想按二维数组的列之一对它进行排序...例如:
$a = array(
'user4' => array('name' => 'u4', 'payment' => 1000, 'time' => 5000),
'user2' => array('name' => 'u2', 'payment' => 2000, 'time' => 5000),
'user3' => array('name' => 'u3', 'payment' => 2000, 'time' => 3000),
);
我想按付款
(DESC
) 和时间
(ASC
) 对其进行排序。
所以排序后的数组应该是这样的:
$a = array(
'user3' => array('name' => 'u3', 'payment' => 2000, 'time' => 3000),
'user2' => array('name' => 'u2', 'payment' => 2000, 'time' => 5000),
'user4' => array('name' => 'u4', 'payment' => 1000, 'time' => 5000),
);
怎么做呢? 谢谢,
我找到了解决方案:
foreach ($a as $key => $row) {
$payment[$key] = $row['payment'];
$time[$key] = $row['time'];
}
array_multisort($payment, SORT_DESC, $time, SORT_ASC, $a);
最佳答案
您可以使用usort
:
$arr = array(
'user4' => array('name' => 'u4', 'payment' => 1000, 'time' => 5000),
'user2' => array('name' => 'u2', 'payment' => 2000, 'time' => 5000),
'user3' => array('name' => 'u3', 'payment' => 2000, 'time' => 3000),
);
function mySort($a,$b) {
if ($a['payment'] == $b['payment']) {
return $a['time'] - $b['time'];
} else {
return $b['payment'] - $a['payment'];
}
}
usort($arr, 'mySort');
print_r($arr);
输出:
Array
(
[0] => Array
(
[name] => u3
[payment] => 2000
[time] => 3000
)
[1] => Array
(
[name] => u2
[payment] => 2000
[time] => 5000
)
[2] => Array
(
[name] => u4
[payment] => 1000
[time] => 5000
)
)
关于php - 按 2 列对多维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10315753/