我正在構建一些電話統計數據,並且輸出下面我需要基本合併相同的src並將持續時間加在一起。例如數組索引0到6個會合併成一個數組,它看起來像下面這樣:如何根據當前/前一個數組中的值將數據合併到多維數組中
[0] => Array ([calldate] => 2014-12-01 08:31:47 [src] => 1234 [duration] => 190)
你可能一直到8,但因爲想它不應該是指數0指數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'];
}
}
Rasclatts你的答案在不同時間分隔不同的電話,這正是我所需要的。現在我將構建另一個for循環來遍歷新數組,以查找30/60秒持續時間內的呼叫。我修改了If語句中的Rasclatts代碼,使得持續時間<30而不是<15,因爲合併了相距30分鐘的5678 src調用。謝謝。 – Elliot 2014-12-07 09:40:22