У меня есть массив
Array
(
[0] => Array
(
[order_id] => 1318
[code] => shipping
[title] => UK Shipping (Weight: 0.00kg)
[value] => 10.2000
)
[1] => Array
(
[order_id] => 1318
[code] => sub_total
[title] => Sub-Total
[value] => 4.7000
)
[2] => Array
(
[order_id] => 1318
[code] => coupon
[title] => Coupon (10P)
[value] => -0.4700
)
[3] => Array
(
[order_id] => 1318
[code] => tax
[title] => VAT (20%)
[value] => 2.8860
[sort_order] => 8
)
[4] => Array
(
[order_id] => 1318
[code] => total
[title] => Total
[value] => 17.3160
)
)
Я хочу поменять индекс массива.
Я хочу поменять индекс массива, когда [code] => купон на [code] => sub_total, если купон доступен.
Я хочу, чтобы позиция купона была выше промежуточной суммы.
Я хочу, чтобы положение sub_total было выше чана.
Как это возможно?
Пожалуйста, помогите мне.
Вы можете определить пользовательский массив порядка сортировки, который помещает каждое из возможных значений code
в порядке, который вы хотите.
$custom_sort_order = array(
'shipping' => 1,
'coupon' => 2,
'sub_total' => 3,
'tax' => 4,
'total' => 5);
затем вы можете использовать этот пользовательский порядок сортировки в функции сравнения usort
чтобы получить элементы массива в нужном вам порядке.
usort($your_array, function($x, $y) use ($custom_sort_order) {
// find the sort number for each item
$x = $custom_sort_order[$x['code']];
$y = $custom_sort_order[$y['code']];
// do the comparison
if ($x == $y) return 0;
return $x - $y;
});
Других решений пока нет …