[英]PHP Sum value in multidimensional array per hour
我在$ result中有這個數組
Array
(
[0] => Array
(
[0] => Array
(
[buysell] => 270
[extracthour] => 13
[date] => 2016-06-06 13:15:00
)
[1] => Array
(
[buysell] => 7080
[extracthour] => 14
[date] => 2016-06-06 14:00:00
)
[2] => Array
(
[buysell] => 1680
[extracthour] => 15
[date] => 2016-06-06 15:00:00
)
[3] => Array
(
[buysell] => 840
[extracthour] => 16
[date] => 2016-06-06 16:00:00
)
[4] => Array
(
[buysell] => 1320
[extracthour] => 17
[date] => 2016-06-06 17:00:00
)
)
[1] => Array
(
[0] => Array
(
[buysell] => 240
[extracthour] => 0
[date] => 2016-06-07 00:00:00
)
[1] => Array
(
[buysell] => 240
[extracthour] => 2
[date] => 2016-06-07 02:00:00
)
[2] => Array
(
[buysell] => 480
[extracthour] => 4
[date] => 2016-06-07 04:15:00
)
[3] => Array
(
[buysell] => 240
[extracthour] => 5
[date] => 2016-06-07 05:00:00
)
[4] => Array
(
[buysell] => 360
[extracthour] => 7
[date] => 2016-06-07 07:00:00
)
等等! 我想將這些值作為數組輸入變量
Array
(
[0] => array
(
[buysell] => (sum of all values in the same extracthour)
[extracthour] => 1
依此類推,直到獲得當日以來每個小時的購買價值為止。 有人可以解釋如何解決嗎?
這可能對您有幫助:
function sumBuySells(array $data) {
$sums = array();
foreach($data as $day) {
foreach($day as $hourRow) {
if (!array_key_exists($hourRow['extracthour'], $sums)) {
$sums[$hourRow['extracthour']] = 0;
}
$sums[$hourRow['extracthour']] += $hourRow['buysell'];
}
}
$result = array();
foreach($sums as $extracthour => $buysell) {
$result[] = ['buysell' => $buysell, 'extracthour' = $extracthour];
}
return $result;
}
假設整個數組在變量$new
。 請在下面找到代碼。 希望這可以幫助。
輸入:
Array
(
[0] => Array
(
[0] => Array
(
[buysell] => 270
[extracthour] => 13
[date] => 2016-06-06 13:15:00
)
[1] => Array
(
[buysell] => 7080
[extracthour] => 14
[date] => 2016-06-06 14:00:00
)
)
[1] => Array
(
[0] => Array
(
[buysell] => 240
[extracthour] => 0
[date] => 2016-06-07 00:00:00
)
[1] => Array
(
[buysell] => 240
[extracthour] => 2
[date] => 2016-06-07 02:00:00
)
)
)
碼:
$new = array();
$c = 1;
for($i=0;$i<count($a);$i++)
{
$sum =0;
for($k=0;$k<count($a[$i]);$k++)
{
$sum = $sum + $a[$i][$k]['buysell'];
}
$new[$i]['buysell'] = $sum;
$new[$i]['extracthour'] = $c;
$c++;
}
echo "<pre>";
print_r($new);
輸出:
Array
(
[0] => Array
(
[buysell] => 7350
[extracthour] => 1
)
[1] => Array
(
[buysell] => 480
[extracthour] => 2
)
)
假設您需要從輸入中獲取輸出,如下所示:
輸入:
$arr = array
(
"0" => array
(
"0" => array
(
"buysell" => "270",
"extracthour" => "13",
"date" => "2016-06-06 13:15:00"
),
"1" => array
(
"buysell" => "7080",
"extracthour" => "13",
"date" => "2016-06-06 14:00:00"
),
"2" => array
(
"buysell" => "1680",
"extracthour" => "2",
"date" => "2016-06-06 15:00:00"
)
),
"1" => array
(
"0" => array
(
"buysell" => 240,
"extracthour" => 0,
"date" => "2016-06-07 00:00:00"
),
"1" => array
(
"buysell" => 240,
"extracthour" => 2,
"date" => "2016-06-07 02:00:00"
),
"2" => array
(
"buysell" => 480,
"extracthour" => 2,
"date" => "2016-06-07 04:15:00"
)
),
);
輸出:-
Array
(
[0] => Array
(
[0] => Array
(
[buysell] => 7350
[extracthour] => 13
)
[1] => Array
(
[buysell] => 1680
[extracthour] => 2
)
)
[1] => Array
(
[0] => Array
(
[buysell] => 240
[extracthour] => 0
)
[1] => Array
(
[buysell] => 720
[extracthour] => 2
)
)
)
碼:
$outputArr = array();
foreach($arr AS $key => $dataArr) {
foreach ($dataArr AS $eachArr) {
$outputArr[$key][$eachArr['extracthour']]['buysell'] += $eachArr['buysell'];
$outputArr[$key][$eachArr['extracthour']]['extracthour'] = $eachArr['extracthour'];
}
$outputArr[$key] = array_values($outputArr[$key]);
}
如果需要單個數組,則刪除多維
$outputArr[$eachArr['extracthour']]['buysell'] += $eachArr['buysell'];
$outputArr[$eachArr['extracthour']]['extracthour'] = $eachArr['extracthour'];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.