我遇到了以下问题,坦率地说不知道如何解决这个问题:
每个数组在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小时的数组,并且每小时都有相应的值总和。
答案 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);