【发布时间】:2015-02-04 08:51:05
【问题描述】:
我正在构建一些电话统计信息,并在下面有输出,我需要基本上合并相同的 src 并将持续时间加在一起。例如,数组索引 0 到 6 将合并为一个数组,如下所示:
[0] => Array ( [calldate] => 2014-12-01 08:31:47 [src] => 1234 [duration] => 190 )
您可能在想它不应该是索引 0 到 8,但因为索引 6 只有 10 秒,这基本上表示呼叫已被应答。可以假设,如果一个通话时长是 30 秒,那么它就没有被接听。
这并不像在数组中找到匹配的 src 并将所有持续时间加在一起那么简单,尽管您将在 index 11 9123 中看到调用并在 12 秒内得到答复,但他们在大约 30 分钟后回电并且他们在9:55:31 的第二次呼叫在 15 秒内得到应答,这需要将最终数组中的项目分开。
src 只是虚构的,不会是现实世界中的数字。
Array (
[0] => Array ( [calldate] => 2014-12-01 08:31:47 [src] => 1234 [duration] => 30 )
[1] => Array ( [calldate] => 2014-12-01 08:32:22 [src] => 1234 [duration] => 30 )
[2] => Array ( [calldate] => 2014-12-01 08:32:57 [src] => 1234 [duration] => 30 )
[3] => Array ( [calldate] => 2014-12-01 08:33:32 [src] => 1234 [duration] => 30 )
[4] => Array ( [calldate] => 2014-12-01 08:34:07 [src] => 1234 [duration] => 30 )
[5] => Array ( [calldate] => 2014-12-01 08:34:42 [src] => 1234 [duration] => 30 )
[6] => Array ( [calldate] => 2014-12-01 08:35:12 [src] => 1234 [duration] => 10 )
[7] => Array ( [calldate] => 2014-12-01 08:35:47 [src] => 1234 [duration] => 30 )
[8] => Array ( [calldate] => 2014-12-01 08:36:22 [src] => 1234 [duration] => 30 )
[9] => Array ( [calldate] => 2014-12-01 08:51:20 [src] => 5678 [duration] => 15 )
[10] => Array ( [calldate] => 2014-12-01 09:09:14 [src] => 5678 [duration] => 10 )
[11] => Array ( [calldate] => 2014-12-01 09:22:58 [src] => 9123 [duration] => 12 )
[12] => Array ( [calldate] => 2014-12-01 09:42:42 [src] => 4567 [duration] => 30 )
[13] => Array ( [calldate] => 2014-12-01 09:43:17 [src] => 4567 [duration] => 30 )
[14] => Array ( [calldate] => 2014-12-01 09:43:52 [src] => 4567 [duration] => 30 )
[15] => Array ( [calldate] => 2014-12-01 09:44:27 [src] => 4567 [duration] => 30 )
[16] => Array ( [calldate] => 2014-12-01 09:45:02 [src] => 4567 [duration] => 29 )
[17] => Array ( [calldate] => 2014-12-01 09:55:31 [src] => 9123 [duration] => 15 )
[18] => Array ( [calldate] => 2014-12-01 10:34:29 [src] => 8912 [duration] => 10 )
[19] => Array ( [calldate] => 2014-12-01 13:26:29 [src] => 3456 [duration] => 30 )
[20] => Array ( [calldate] => 2014-12-01 13:27:04 [src] => 3456 [duration] => 30 )
[21] => Array ( [calldate] => 2014-12-01 13:27:39 [src] => 3456 [duration] => 30 )
[22] => Array ( [calldate] => 2014-12-01 13:28:14 [src] => 3456 [duration] => 30 )
[23] => Array ( [calldate] => 2014-12-01 13:28:49 [src] => 3456 [duration] => 30 )
[24] => Array ( [calldate] => 2014-12-01 13:29:24 [src] => 3456 [duration] => 30 )
[25] => Array ( [calldate] => 2014-12-01 13:29:54 [src] => 3456 [duration] => 4 )
)
我相信这需要某种 for 循环,它必须比较当前/以前的调用并将它们添加到新数组中。我已经这样做了,但它没有给出预期的结果,因为它只会在 src 匹配的情况下将前一个调用和当前调用加在一起。这是我目前拥有的代码:
$adjusted = array();
for($i = 1; $i < sizeof($adjustedTotalCallsExt); $i++) {
$previousCall = $adjustedTotalCallsExt[$i-1];
$currentCall = $adjustedTotalCallsExt[$i];
if($previousCall['src'] == $currentCall['src']) {
$adjusted[] = $previousCall['duration'] + $currentCall['duration'];
}
else {
$adjusted[] = $currentCall['duration'];
}
}
【问题讨论】:
标签: php mysql arrays multidimensional-array merge