PHP通过对齐时间戳合并两个连续的时间序列数据数组
我有一个主数据数组,它总是由600秒的数据按时间升序组成。数据如下所示:PHP通过对齐时间戳合并两个连续的时间序列数据数组,php,arrays,merge,Php,Arrays,Merge,我有一个主数据数组,它总是由600秒的数据按时间升序组成。数据如下所示: [{'timestamp' => '2016-10-10T10:00:00', 'p_value' => 55 }, {'timestamp' => '2016-10-10T10:00:01', 'p_value' => 57 }, {'timestamp' => '2016-10-10T10:00:02', 'p_value' => 51 }, {'timestamp' => '
[{'timestamp' => '2016-10-10T10:00:00', 'p_value' => 55 },
{'timestamp' => '2016-10-10T10:00:01', 'p_value' => 57 },
{'timestamp' => '2016-10-10T10:00:02', 'p_value' => 51 },
{'timestamp' => '2016-10-10T10:00:03', 'p_value' => 54 },
{'timestamp' => '2016-10-10T10:00:04', 'p_value' => 48 }]
我有一个辅助阵列,它有多达600秒的数据。此数据是主数据数组时间戳的连续“子集”,但起始(和结束)时间戳值可能会有所不同:
[{'timestamp' => '2016-10-10T10:00:01', 's_value' => 1221 },
{'timestamp' => '2016-10-10T10:00:02', 's_value' => 4322 },
{'timestamp' => '2016-10-10T10:00:03', 's_value' => 2414 },]
如何通过时间戳将次数组与主数组“对齐”,然后以计算效率最高的方式将“s_值”添加到主数组中
我已经使用嵌套的foreach循环实现了一些非常类似的东西,但是我认为这是O(N^2)复杂性 假设第一个数组在
$firstArr
中,第二个数组在$secondArr
中,并且还假设
$secondArr[count($secondArr)-1]['timestamp]感谢您提供此解决方案,我已经实施了它,并确认它能按预期工作。
for($i=0; $i<count($firstArr); $i++)
{
if($firstArr[$i]['timestamp'] == $secondArr[0]['timestamp'])
{
$startingIndex = $i;
break;
}
}
for($i=0; $i<count($secondArr); $i++)
{
$firstArr[$startingIndex+$i]['s_value'] = $secondArr[$i]['s_value'];
}