匹配元素上的PHP数组添加
我需要一个函数,可以添加具有匹配元素的x数组的元素匹配元素上的PHP数组添加,php,arrays,Php,Arrays,我需要一个函数,可以添加具有匹配元素的x数组的元素 Array ( [0] => Array ( [0] => Array ([kwh] => 313.9799,[time_read] => 1311825600) [1] => Array ([kwh] => 312.3098,[time_read] => 13118
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)
)
)
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)
)
下面是一个包含两个元素的源数组示例
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)
)
)
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)
)
我希望看到如下输出。让我吃惊的是数组的索引可能不匹配。一个数组可能有10个元素,而另一个数组可能有20个元素。必须使用time_read值来查找匹配的数组元素
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)
)
)
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)
)
使用时间戳作为数组键,使用嵌套循环获取内部值并将其相加
$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)
) */
也很好,因为这样你就可以按时间顺序排列它们了我假设你正在处理一个问题是否正确?只是好奇:)是的。买了一台TED5000,并把它连接到我家的计价器上。我没有使用第三方服务,而是编写了自己的小php监控脚本。嗯,+1是一个很棒的主意!谷歌电能表早就想到了,但他们的服务已经停止,我需要一个爱好:P