PHP цикл через массив, чтобы найти X последовательных чисел

У меня есть код, который находит 3 последовательных числа из массива и выводит их.

То, что я хотел бы сделать сейчас, это сказать, сколько чисел найти. Я думал о том, чтобы поместить цикл for внутрь цикла for, но я не вижу, чтобы он работал должным образом.

Как я могу заставить эту итерацию запускаться X раз, пока X не встретится?

 if(isset($arr[$i+1]))
if($arr[$i]+1==$arr[$i+1])
echo 'I found it:',$arr[$i],'|',$arr[$i+1],'|',$arr[$i+2],'|',$arr[$i+3],'<br>';
exit;

Это то, что я имею до сих пор

for($i=0; $i < sizeof($arr); $i++) {
if(isset($arr[$i+1]))
if($arr[$i]+1==$arr[$i+1])
{

if(isset($arr[$i+2]))
if($arr[$i]+2==$arr[$i+2])
{

if(isset($arr[$i+3]))
if($arr[$i]+3==$arr[$i+3])
{
echo 'I found it:',$arr[$i],'|',$arr[$i+1],'|',$arr[$i+2],'|',$arr[$i+3],'<br>';
exit;
}//if3

}//if 2

}//if 1
}

2

Решение

Вместо того, чтобы смотреть несколько раз вперед, вы можете просто пройтись по массиву, сравнивая текущее значение с предыдущим значением, чтобы увидеть, являются ли значения последовательными, при этом отслеживая текущий последовательный счет. Последовательные числа должны быть добавлены в массив, а непоследовательные числа должны повторно инициализировать массив. Когда вы достигнете желаемого количества последовательных чисел, вы можете вернуть результат.

function find_consecutive($array, $count) {
$consecutive = array();
$previous = null;
foreach ($array as $value) {
if ($previous !== null && $value == $previous + 1) {
$consecutive[] = $value;
if ($found == $count) {
return "I found it: " . implode("|", $consecutive) . "<br>";
}
} else {
$consecutive = array($value);
$found = 1;
}
$previous = $value;
$found++;
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]