-3

我有这个

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]

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

4

1 回答 1

1

尽管您没有提供任何代码,但假设我理解正确,这里有一些东西可以工作

    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;
    }

这是您的列表的使用示例:

getIntervals([
    1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983,
    1990, 1991,
    1993, 1994, 1995,
]);

和预期的结果:

array:3 [
  0 => array:2 [
    0 => 1976
    1 => 1983
  ]
  1 => array:2 [
    0 => 1990
    1 => 1991
  ]
  2 => array:2 [
    0 => 1993
    1 => 1995
  ]
]
于 2015-11-10T19:54:21.423 回答