Внутри laravel шаблона блэйда я пытаюсь уменьшить массив следующим образом:
$longList = [['box' => 1, 'kg' => 2], ['box' => 2, 'kg' => 2], ['box' => 3, 'kg' => 3]];
примерно так: $reducedList = [['count' => 2, 'kg' => 2], ['count' => 1, 'kg' => 3]];
Это то, что я до сих пор:
@php
$variableWeights = isset($sale->variable_weight_json) ? collect(json_decode($sale->variable_weight_json, true)) : null;
$groups = array();
if (isset($variableWeights)) {
$groups = $variableWeights->reduce(function($carry, $item) {
$index = array_search($item['kg'], array_column($carry, 'weight'));
if (isset($index)) {
$existing = $carry[$index];
array_splice($carry, $index, 1, [
'count' => $existing['count'] + 1,
'weight' => $item['kg']
]);
} else {
array_push($carry, [
'count' => 1,
'weight' => $item['kg'],
]);
}
return $carry;
}, array());
}
@endphp
Но это дает мне ошибку Неопределенное смещение: 0
Я новичок в php. Как исправить код или есть лучший подход для достижения желаемого результата?