gpt4 book ai didi

php - 将一个数组缩减为另一个数组

转载 作者:行者123 更新时间:2023-12-03 23:06:42 25 4
gpt4 key购买 nike

在 Laravel Blade 模板内,我试图减少这样的数组:

$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

但它给了我错误 undefined offset :0

我是 php 新手。代码应该如何修正或者是否有更好的方法来达到预期的结果?

最佳答案

为什么不把它简化为像这样更简单的东西

$reducedList = [2 => 2, 3 => 1]

其中权重是索引,值是计数。

$reducedList = [];
foreach ($longList as $box) {
if (isset($reducedList[$box['kg']]) {
$reducedList[$box['kg']]++;
} else {
$reducedList[$box['kg']] = 1;
}
}

这样您就可以避免复杂性,但仍然可以获得相同数量的信息。

关于php - 将一个数组缩减为另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60548848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com