本站资源收集于互联网,不提供软件存储服务,每天免费更新优质的软件以及学习资源!

如何用PHP高效合并二维数组中指定键对应的值_并保持数据总和不变?

网络教程 app 1℃

如何用PHP高效合并二维数组中指定键对应的值_并保持数据总和不变

php 二维数组中指定键对应的值合并

给定一个二维数组,任务是将指定键对应的值合并,合并后的数组与原数组相比,数据总和不变。

示例数据

$arr = [ ‘categories’ => [ ’22-01-30′, ’22-01-31′, ’22-02-01′, ’22-02-02′, ’22-02-03′, ’22-02-04′, ’22-02-05′, ’22-02-06′, ’22-02-07′, ’22-02-08′, ’22-02-09′, ’22-02-10′, ’22-02-11′, ’22-02-12′, ’22-02-13′, ’22-02-14′, ’22-02-15′, ’22-02-16′, ’22-02-17′, ’22-02-18′, ’22-02-19′, ’22-02-20′, ’22-02-21′, ’22-02-22′, ’22-02-23′, ’22-02-24′, ’22-02-25′, ’22-02-26′, ’22-02-27′, ’22-02-28′, ], ‘data’ => [ ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘0’, ‘5638.04’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘0.00’, ‘25915.99’, ‘1606.44’, ‘1676.90’, ‘0.00’, ‘0.00’, ‘1203.08’, ],];

解决方法

可以使用 array_chunk() 和 array_reduce() 函数组合完成。

$chunk = 6;$result = array_reduce(array_chunk($arr[‘categories’], $chunk), function ($result, $current) use ($chunk, $arr) { $start = current($current); $end = end($current); $result[‘categories’][] = $start . ‘/’ . $end; $count = count($result[‘categories’] ?? []); $result[‘data’][] = array_sum(array_slice($arr[‘data’] ?? [], $count * $chunk, $chunk)); return $result;}, [‘categories’ => [], ‘data’ => []]);

说明

    array_chunk() 函数将 categories 数组以指定的 $chunk 分组。array_reduce() 函数对分好组的数据进行迭代,并使用闭包函数处理每一组。在闭包函数中,首先计算每一组的开始和结束日期。然后,使用 $count 来计算当前组在 $arr 数组中的下标。最后,使用 array_sum() 函数对 $arr 数组中对应组的值求和。

这样,就可以得到合并后的结果数组 $result,其中 categories 键保存的是日期范围,data 键保存的是对应日期范围的总和值。

演示

将上面的示例数据输入到代码中,得到以下结果:

array(2) { ["categories"]=> array(5) { [0]=> string(8) "22-01-30/22-02-04" [1]=> string(8) "22-02-05/22-02-10" [2]=> string(8) "22-02-11/22-02-16" [3]=> string(8) "22-02-17/22-02-22" [4]=> string(8) "22-02-23/22-02-28" } ["data"]=> array(5) { [0]=> float(0) [1]=> float(5638.04) [2]=> float(0) [3]=> float(0) [4]=> float(30402.41) }}

可以看出,总和值保持不变:

array_sum($arr[‘data’]) === array_sum($result[‘data’]) // true

以上就是如何用PHP高效合并二维数组中指定键对应的值,并保持数据总和不变?的详细内容,更多请关注范的资源库其它相关文章!

转载请注明:范的资源库 » 如何用PHP高效合并二维数组中指定键对应的值_并保持数据总和不变?

喜欢 (0)