#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";
}
И несколько примечаний:
-
индексация массива начинается с 0, когда ваш цикл for начинается с $ i = 1, вы пропускаете первый элемент. Обратите внимание, что, начиная с $ i = 1, я сравниваю $ avail_times [$i] и $ avail_times [$i-1], поэтому я покрываю $ avail_times [0].
-
Я не знаю, что вы делаете с $max = count($ times). Вы никогда не определяете $ times.