我需要一个可以添加具有匹配元素的x数组元素的函数。
以下是具有两个元素的源数组的示例。
Array
(
[0] => Array
(
[0] => Array
([kwh] => 313.9799,[time_read] => 1311825600)
[1] => Array
([kwh] => 312.3098,[time_read] => 1311826500)
[2] => Array
([kwh] => 302.0525,[time_read] => 1311827400)
[3] => Array
([kwh] => 312.2946,[time_read] => 1311828300)
)
[1] => Array
(
[0] => Array
([kwh] => 723.4205,[time_read] => 1311825600)
[1] => Array
([kwh] => 686.9258,[time_read] => 1311826500)
[2] => Array
([kwh] => 714.3203,[time_read] => 1311827400)
[3] => Array
([kwh] => 707.8232,[time_read] => 1311828300)
)
)
我希望看到以下输出。抛出我的是数组的索引可能不匹配。一个数组可能有10个元素,而另一个数组可能有20个。必须使用time_read值来查找匹配的数组元素。
Array
(
[0] => Array
([kwh] => 1036,[time_read] => 1311825600)
[1] => Array
([kwh] => 998,[time_read] => 1311826500)
[2] => Array
([kwh] => 1016,[time_read] => 1311827400)
[3] => Array
([kwh] => 1019,[time_read] => 1311828300)
)
答案 0 :(得分:4)
使用时间戳作为数组键,使用嵌套循环来获取内部值并将其添加
$output = array();
foreach ($source_array as $group) {
foreach ($group as $a) {
if (!isset($output[$a['time_read']]))
$output[$a['time_read']] = array('time_read'=>$a['time_read'], 'kwh'=>0);
$output[$a['time_read']]['kwh'] += $a['kwh'];
}
}
print_r($output);
/* output
Array
(
[1311825600] => Array
([kwh] => 1036,[time_read] => 1311825600)
[1311826500] => Array
([kwh] => 998,[time_read] => 1311826500)
[1311827400] => Array
([kwh] => 1016,[time_read] => 1311827400)
[1311828300] => Array
([kwh] => 1019,[time_read] => 1311828300)
) */
也很好,因为你可以使用ksort按时间顺序排序