有这样的数组。
Array
(
[0] => Array
(
[tipo] => Mn
[tsk] => Vr
[date] => 14-06
[J] => 4
[H] => 0
[O] => 0
)
[1] => Array
(
[tipo] => Ds
[tsk] => Mv
[date] => 14-06
[J] => 0
[H] => 0,5
[O] => 0
)
[2] => Array
(
[tipo] => Vr
[tsk] => Do
[date] => 14-06
[J] => 0
[H] => 0
[O] => 5
)
[3] => Array
(
[tipo] => Cl
[tsk] => REG
[date] => 14-06
[J] => 0
[H] => 4.25
[O] => 0
)
[4] => Array
(
[tipo] => Cl
[tsk] => MB10
[date] => 14-06
[J] => 0
[H] => 3.5
[O] => 0
)
)
我需要按 J、H 和 O 键对其进行排序。我的意思是,我需要首先拥有所有在 J 上具有值的子数组,然后是在 H 上具有值的子数组,然后是在 O 上具有值的子数组。 注意:这些列是互斥的,所以如果一个列有值大于 0,其他两个只能有 0。
我已经尝试了很多事情,但显然这个看似简单的任务已经超出了我的想象。我得到的最接近的是array_multisort,但我无法让它工作。我认为这样的事情应该有效:
foreach ($data as $key => $row) {
$J[$key] = $row['J'];
$H[$key] = $row['H'];
$O[$key] = $row['O'];
}
array_multisort($J, SORT_ASC, $H, SORT_ASC, $O, SORT_ASC, $data);
但事实并非如此。