Как я могу проверить массив несколько раз подряд?

#php #arrays

#php #массивы

Вопрос:

У меня есть массив определенных раз из моей базы данных:

 $avail_times = array("9","11","12","13","15","16","17","18");
  

Я хочу отобразить 4 последовательных значения, если они существуют, если нет, я хочу продолжить. Например, в приведенном выше массиве единственное место, где есть четыре последовательных числа, которые правильно следуют за предыдущим, — это 15,16,17 и 18

Мысли?

Возможно, это повторяющаяся проблема, но я не нашел решения. Моя ситуация немного иная. Мне нужно показывать только те числа, которые идут подряд четыре или более раз. Это то, что я придумал, но это не работает должным образом:

 $avail_times = array("9","10","11","13","14","15","16","17","19","20","21","22");

for($i=1, $max = count($times)   4; $i < $max; $i  )
{
    if ($avail_times[$i] == $avail_times[$i   1] - 1)
    {
        echo $avail_times[$i];
    }
}
  

Комментарии:

1. пахнет домашним заданием … Разберитесь с этим, пройдитесь по массиву, отслеживая, где вы находитесь. если вы не можете разобраться в этом вручную, вам нужно продолжать пытаться.

2. Почему это привлекает так много негативного внимания? Это законный вопрос.

3. что ж, у меня было решение для вас, но тема закрыта.

Ответ №1:

Это должно сделать вас:

 $avail_times = array("9","10","11","13","14","15","16","17","19","20","21","22");

$consec_nums = 1;
for($i = 1; $i <count($avail_times); $i  ) {
    if($avail_times[$i] == ($avail_times[$i - 1]   1)) {
        $consec_nums  ;
        if($consec_nums == 4) break;
    }
    else {
        $consec_nums = 1;
    }
}
if($consec_nums == 4) {
    echo "found: {$avail_times[$i-3]}, {$avail_times[$i-2]}, {$avail_times[$i-1]}, {$avail_times[$i]}n";
}
  

И несколько примечаний:

  1. индексация массива начинается с 0, когда ваш цикл for начинается с $ i = 1, вы пропускаете первый элемент. Обратите внимание, что, начиная с $ i = 1, я сравниваю $ avail_times [$i] и $ avail_times [$i-1], поэтому я покрываю $ avail_times [0].

  2. Я не знаю, что вы делаете с $max = count($ times). Вы никогда не определяете $ times.