[英]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.