[英]Regroup and sum array in php
我从我的数据库中收集开始和结束日期。 我使用一个函数来确定每天的价值。
$array = array();
foreach ($db_value as $key => $value) {
$Variable1 = strtotime($Date1);
$Variable2 = strtotime($Date2);
for ($currentDate = $Variable1; $currentDate <= $Variable2;
$currentDate += (86400)) {
$Store = date('Y-m-d', $currentDate);
$array[] = array( $Store,
$value->Value2);
}
$result = array_merge($array);
}
这给出了输出:
0 => array:2 [▼
0 => "2019-11-24"
1 => "4"
]
1 => array:2 [▼
0 => "2019-11-24"
1 => "10"
]
但是,我想以这样的方式塑造数组,即每天获得第二个字段的总和而没有重复。 喜欢:
0 => array:2 [▼
0 => "2019-11-24"
1 => "14"
]
但是,我不能再进一步了。
您可以将日期作为键,如果日期相同,则将索引1
相加。
$result = [];
foreach($array as $v){
if(isset($result[$v[0]])){
$result[$v[0]][1] += $v[1];
}else{
$result[$v[0]] = $v;
}
}
$result = array_values($result);
我不遵循您以前的逻辑,因此也许您可以在迭代数据库结果时进行总结,但考虑到您的输出:
<?php
$dates =
[
[
'2009-11-24',
2
],
[
'2009-11-24',
5
]
];
foreach($dates as $date) {
$result[$date[0]][] = $date[1];
}
$result = array_map('array_sum', $result);
$result = array_map(null, array_keys($result), $result);
var_export($result);
输出:
array (
0 =>
array (
0 => '2009-11-24',
1 => 7,
),
)
第一个 foreach 结果如下:
array(1) {
["2009-11-24"]=>
array(2) {
[0]=>
int(2)
[1]=>
int(5)
}
}
然后 array_map 和 array_sum 结果如下:
array(1) {
["2009-11-24"]=>
int(7)
}
最后一个 array_map 重新调整为原始格式,一个数组数组,其中包含日期以及每个数组的第一个和第二个索引的总和值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.