Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匹配元素上的PHP数组添加_Php_Arrays - Fatal编程技术网

匹配元素上的PHP数组添加

匹配元素上的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

我需要一个函数,可以添加具有匹配元素的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)
        )
)
    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