Php 在不规则间隔的大量数据中,找出一段时间内的最大变化
在我的情况下,我必须处理由日期组成的大量数据集,每个日期都有相应的数字。这些日期之间的间隔不是静态的,这意味着一些日期相隔几秒钟,而另一些日期相隔几天。此数据具有以下格式:(以PHP数组转储格式提供) 我需要找出在某个时间限制内的两个日期之间数据的最大增长,例如一天、一周等。我一直在使用这段PHP代码来实现这一点:Php 在不规则间隔的大量数据中,找出一段时间内的最大变化,php,sorting,resources,Php,Sorting,Resources,在我的情况下,我必须处理由日期组成的大量数据集,每个日期都有相应的数字。这些日期之间的间隔不是静态的,这意味着一些日期相隔几秒钟,而另一些日期相隔几天。此数据具有以下格式:(以PHP数组转储格式提供) 我需要找出在某个时间限制内的两个日期之间数据的最大增长,例如一天、一周等。我一直在使用这段PHP代码来实现这一点: for ($i=0; $i<$numrows-1; $i++) { for($o=1; $o<($numrows-1)-$i; $o++) { i
for ($i=0; $i<$numrows-1; $i++) {
for($o=1; $o<($numrows-1)-$i; $o++) {
if((strtotime($dataArray[$i+$o]['Date'])-strtotime($dataArray[$i]['Date']))<86400) { //86400 for constraint of one day
$diffs[$i]['date'] = strtotime($dataArray[$i+$o]['Date']);
$diffs[$i]['data'] = $dataArray[$i+$o]['data']-$dataArray[$i]['Data'];
}
}
}
对于($i=0;$i)来说,使用数据库将更容易实现。无论如何
我将添加一个索引(即保留原始数据引用的附加数组),按delta date和delta data排序
Array[2000] {
Array[2] {
DeltaDate: 10
DeltaData: 1.234
Row: ???
}
Array[2] {
DeltaDate: 66
DeltaData: 0.80863
Row: 1
}
Array[2] {
Date: 160000
Data: 0
Row: 2
}
Array[2] {
Date: 160000
Data: 1
Row: ???
}
Array[2] {
Date: 160000
Data: 234
Row: ???
}
...
}
之后,我将在该索引中查找满足时间限制的最高记录
在SQL数据库中,这将用以下查询表示:
SELECT * FROM Array
WHERE DeltaDate <= time constraint
ORDER BY DeltaData DESC LIMIT 1
从数组中选择*
三角洲在哪里
SELECT * FROM Array
WHERE DeltaDate <= time constraint
ORDER BY DeltaData DESC LIMIT 1