【发布时间】:2017-12-25 07:25:53
【问题描述】:
我有一个如下所示的数组,但它可能包含更多草稿。
$multi_arr = array(
'draft1' => array (
'alloc_coeff' => 560,
'steps_count' => 2,
'order_draft' => array(
'0' => array(
'whse_id' => 4,
'quantity' => 0,
'percent' => 0
),
'1' => array(
'whse_id' => 1,
'quantity' => 10,
'percent' => 66.666666666667
)
)
),
'draft2' => array (
'alloc_coeff' => 1517,
'steps_count' => 1,
'order_draft' => array(
'0' => array(
'whse_id' => 1,
'quantity' => 10,
'percent' => 66.666666666667
)
)
),
'draft3' => array (
'alloc_coeff' => 559,
'steps_count' => 2,
'order_draft' => array(
'0' => array(
'whse_id' => 2,
'quantity' => 0,
'percent' => 0
),
'1' => array(
'whse_id' => 1,
'quantity' => 10,
'percent' => 66.666666666667
)
)
)
);
我需要使用两个变量对内容进行排序:alloc_coeff 和 steps_count。
首先alloc_coeff需要从最高值到最低值来考虑。
然后作为第二个变量,steps_count 从最低值到最高值。
usort($multi_arr, function($a, $b) {
return $a['alloc_coeff'] <=> $b['alloc_coeff'];
});
我不需要重写整个数组并将其存储在临时变量中,我只需要像这样排序的键(预期结果)draft2、draft1,最后是draft3。
有什么方法可以做到这一点?
【问题讨论】:
标签: php arrays sorting multidimensional-array