[英]group array item by date in php foreach
我在php中有如下數組:
Array
(
[0] => Array
(
[id] => 1
[time] => 2014-11-09T16:32:05
[power] => 0.123
)
[1] => Array
(
[id] => 2
[time] => 2014-11-19T18:32:06
[power] => 0.208
)
[2] => Array
(
[id] => 3
[time] => 2013-09-19T20:32:07
[power] => 0.106
)
[3] => Array
(
[id] => 4
[time] => 2013-09-20T10:32:07
[power] => 0.248
)
[4] => Array
(
[id] => 5
[time] => 2013-09-20T12:32:07
[power] => 0.298
)
)
我想計算以下算法導致的每天電力消耗:
for(i = 0; i < array.lengh - 1; i++){
$power = array.data[i].power;
$time_diff = (array.data[i+1].time)/(1000*60*60) - array.data[i].time)/(1000*60*60));
$consumption .= $power * $time_diff;
}
如何在php中將每天的$consumption
分組?
您可以在此處使用PHP強大的strtotime()
函數。 這為您提供了一個unix時間戳,您可以更好地使用它。 要回答您的問題,可以通過以下方式完成
$sortedData = array();
foreach ($data as $element) {
$timestamp = strtotime($element['time']);
$date = date("d.m.Y", $timestamp); //truncate hours:minutes:seconds
if ( ! isSet($sortedData[$date]) ) { //first entry of that day
$sortedData[$date] = array($element);
} else { //just push current element onto existing array
$sortedData[$date][] = $element
}
}
這應該給你一個新的數組,形式為
Array(
['19.09.2013'] => Array(
[0] => Array([id] => ..., [time] => ..., [power] => ...),
[1] => Array([id] => ..., [time] => ..., [power] => ...),
...
),
['20.09.2013'] => Array(
[0] => Array([id] => ..., [time] => ..., [power] => ...),
[1] => Array([id] => ..., [time] => ..., [power] => ...),
...
),
...
)
為了獲得力量的總和,只需執行以下操作
foreach ($sortedData as $date=>$elements) {
$sum = 0;
foreach ($elements as $element) {
$sum += $element['power'];
}
echo "The total sum for $date is $sum.";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.