Как поменять местами элементы массива в php?

У меня есть массив

           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 было выше чана.
Как это возможно?
Пожалуйста, помогите мне.

0

Решение

Вы можете определить пользовательский массив порядка сортировки, который помещает каждое из возможных значений 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;
});
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]