php找到差距并构建一个数组

时间:2015-11-10 19:27:19

标签: php intervals sub-array gaps-in-data

我有这个

array
    (
        [0] => 1976,
        [1] => 1977,
        [2] => 1978,
        [3] => 1979,
        [4] => 1980,
        [5] => 1981,
        [6] => 1982,
        [7] => 1983,
        [8] => 1990,
        [9] => 1991,
        [10] => 1993,
        [11] => 1994,
        [12] => 1995
    )

我想找到间隙之间的间隔,所以它看起来像这样:

$tmp[1]= [[0] => 1976, [1] => 1983]

$tmp[1]= [[0] => 1990, [1] => 1991]

$tmp[1]= [[0] => 1993, [1] => 1995]

最终我将使用相同的方法和最大的数字列表 安迪的想法?

1 个答案:

答案 0 :(得分:0)

尽管你没有提供任何代码,但是假设我理解正确,这里可以使用。

function getIntervals($array) {
   $intervals = [];
   $intervalIndex = 0;
   for ($i = 0; $i < count($array); $i++) {
      //If the beginning is not set, set it.
      if (!isset($intervals[$intervalIndex][0])) {
         $intervals[$intervalIndex][0] = $array[$i];
      }
      if ($i != 0) {
         if ($array[$i] == ($array[$i - 1] + 1)) {
            $intervals[$intervalIndex][1] = $array[$i];
         } else {
            $intervalIndex++;
            $intervals[$intervalIndex][0] = $array[$i];
         }
      }
   }
   return $intervals;
}