求和数组中的键和24小时结构的映射


Sum Keys in Array And Map Against A 24 Hour Structure

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

每个数组在键[0]中都有一个数值,在键[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小时的数组,并且每个小时都有相应的值和。

这里有一个让你开始的想法:

$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);

首先构建一个数组,其中包含表示24小时范围内每小时的索引(简单的"for"循环,使用mktime()函数)

然后,对于数据数组中的每个项,按索引将它们排序到24小时范围数组中,该索引将该时间段表示为一个子数组,关键字为"children",并在迭代时添加到该时间段总数中。

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