阵列中的求和键和24小时结构的映射

时间:2012-03-13 01:19:07

标签: php

我遇到了以下问题,坦率地说不知道如何解决这个问题:

每个数组在key [0]中都有一个数值,在key [1]中有一个时间。我的目标是将此输出映射到24小时。

将键[1]时间在00:00 - 01:00,01:00 - 02:00等之间的所有键[0]值相加。

如果某个时间段内没有值,则应打印“0”。

以下是包含值的数组:

Array ( 

[4045862944400] => Array ( 
[0] => 192 
[1] => 23:52 
) 
[403274909688162] => Array ( 
[0] => 186 
[1] => 22:21 
) 
[402735273075459] => Array ( 
[0] => 311 
[1] => 04:29 
) 
[252948031457462] => Array ( 
[0] => 385 
[1] => 06:22 
) 
[400606749954978] => Array ( 
[0] => 287 
[1] => 05:01 
) 
[286755318061725] => Array ( 
[0] => 358 
[1] => 04:51 
) 
[399687880046865] => Array ( 
[0] => 257 
[1] => 21:51 
) 
[398332190182434] => Array ( 
[0] => 240 
[1] => 23:19 
) 
[397768486905471] => Array ( 
[0] => 311 
[1] => 05:38 
) 
[396907650324888] => Array ( 
[0] => 293 
[1] => 03:38 
) 
[394850557197264] => Array ( 
[0] => 496 
[1] => 05:12 
) 
[394121230603530] => Array ( 
[0] => 475 
[1] => 04:15 
) 
[69757766367627] => Array ( 
[0] => 488 
[1] => 04:01 
) 
[391602517522068] => Array ( 
[0] => 506 
[1] => 03:44 
) 
[390848830930770] => Array ( 
[0] => 437 
[1] => 06:05 
) 
[389975351018118] => Array ( 
[0] => 452 
[1] => 04:00 
) 
[242486689170043] => Array ( 
[0] => 525 
[1] => 04:13 
) 
[388151047867215] => Array ( 
[0] => 415 
[1] => 00:22 
) 
[387476447934675] => Array ( 
[0] => 502 
[1] => 04:51 
) 
[386620518020268] => Array ( 
[0] => 467 
[1] => 06:05 
) 
[215937481836499] => Array ( 
[0] => 359 
[1] => 01:10 
) )

输出应该是一个表示24小时的数组,并且每小时都有相应的值总和。

2 个答案:

答案 0 :(得分:1)

首先建立一个数组,其中的索引代表24小时范围内的每小时(简单的“for”循环,带有mktime()函数)

然后,对于数据数组中的每个项目,将它们按索引排序到24小时范围数组中,该索引将该时间段表示为具有“儿童”键的子数组,并在迭代时添加到该时间段。 / p>

对于显示,循环遍历您的第一个24小时数组,每个子元素都有一个子循环

答案 1 :(得分:1)

这是让你前进的想法:

$hours = array();
foreach($input as $v) {
   $lowerHour = array_shift(explode(':', $v[1]));

   if(!array_key_exists($lowerHour, $hours)) $hours[$lowerHour] = 0;
   $hours[$lowerHour] += $v[0];
}

print_r($hours);