I have an array of sorted numbers, for example:
Array ( [0] => 33 [1] => 34 [2] => 35 [3] => 36 [4] => 66 [5] => 67 [6] => 68 [7] => 69 [8] => 89 [9] => 90 [10] => 91 [11] => 92 [12] => 93 )
In this case, we have the following ranges of numbers:
1) 33-36
2) 66-69
3) 89-93
I want to create an array for each range:
Array1 ( [0] => 33 [1] => 34 [2] => 35 [3] => 36 ) Array2 ( [0] => 66 [1] => 67 [2] => 68 [3] => 69 ) Array3 ( [0] => 89 [1] => 90 [2] => 91 [3] => 92 [4] => 93 )
Advertisement
Answer
<?php
$array = [33,34,35,36,66,67,68,69,89,90,91,92,93];
$min = $array[0];
$currentRange = 0;
$ranges = [];
foreach ($array as $element) {
if($min+1 < $element) {
$currentRange++;
}
$ranges[$currentRange][] = $element;
$min = $element;
}
var_dump($ranges);
Output:
array(3) {
[0]=>
array(4) {
[0]=>
int(33)
[1]=>
int(34)
[2]=>
int(35)
[3]=>
int(36)
}
[1]=>
array(4) {
[0]=>
int(66)
[1]=>
int(67)
[2]=>
int(68)
[3]=>
int(69)
}
[2]=>
array(5) {
[0]=>
int(89)
[1]=>
int(90)
[2]=>
int(91)
[3]=>
int(92)
[4]=>
int(93)
}
}