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

在我的情况下,我必须处理由日期组成的大量数据集,每个日期都有相应的数字。这些日期之间的间隔不是静态的,这意味着一些日期相隔几秒钟,而另一些日期相隔几天。此数据具有以下格式:(以PHP数组转储格式提供)

我需要找出在某个时间限制内的两个日期之间数据的最大增长,例如一天、一周等。我一直在使用这段PHP代码来实现这一点:

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