- Изучаем PHP цикл for, теория и практика
- Примеры циклов for php
- Цикл for
- Цикл while
- Цикл do..while
- Операторы continue и break
- Вложенные циклы
- Использование циклов в PHP
- Foreach – перебор массива
- Результат:
- Альтернативный синтаксис foreach
- For – цикл с счетчиком
- Результат:
- Альтернативный синтаксис
- Результат:
- Альтернативный синтаксис for
- While – цикл с предусловием
- Результат:
- Альтернативный синтаксис while
- Do-while – цикл с постусловием
- Результат:
- Управление циклами
- Break
- Continue
- Результат:
- Примеры циклов for php
Изучаем PHP цикл for, теория и практика
В PHP существуют различные виды циклов, но все они, по сути, делают одно и тоже. Просто с помощью одних циклов более просто решаются одни задачи, с помощью других – иные:
for(инициализация; условие выхода; оператор счетчика) < //тело цикла >
Основные части конструкции цикла for:
- инициализация — это выражение, которое выполняется один раз перед выполнением цикла; обычно используется для инициализации счётчика;
- условие выхода — это выражение, истинность которого проверяется перед каждой итерацией; если выражение вычисляется как истина, то выполняется итерация; в противном случае цикл for завершает работу;
- операто счетчика — это выражение, которое выполняется в конце каждой итерации; обычно используется для изменения счетчика;
- тело цикла — инструкции, выполнение которых нужно повторять.
Цикл for начинается объявлением переменной i (название счетчика не обязательное) и задания ей значения 0 . Затем проверяет, что i меньше девяти, выполняет выражения внутри цикла и увеличивает i на 1 каждый раз.
$str = ''; for ($i = 1; $i $str = rtrim($str, ',') . '.'; echo $str;//на выходе: 1,2,3,4,5,6,7,8,9,10.
- инициализация: $i = 1 (объявление переменной $i и присвоение ей значения 1);
- условие выполнения цикла: $i (пока значение переменной $i меньше или равно 10);
- финальное выражение, которое нужно выполнять в конце каждой итерации: $i++ (увеличение значение переменной $i на 1);
- в теле цикла в переменную $str записывается значения счетчика.
Альтернативный синтаксис цикла for
for ($i = 4; $i > 0; $i--): ?> $i = echo $i; ?>
endfor; ?> //на выходе: $i = 4
$i = 3
$i = 2
$i = 1
Операторы break и continue
Иногда возникает необходимость выйти из цикла до его завершения. В этом случае можно воспользоваться оператором break .
$x = 5; for ($i = 0; $i < 10; ++$i) < if ($i === $x) < echo $i;//на выходе: 5 break; > >
Когда значение переменной $i достигнет 5 , осуществляется выход из цикла с помощью оператора break .
В отличие от оператора break , оператор continue производит переход к следующей итерации. Например, нам надо посчитать сумму только нечетных чисел из некоторого диапазона:
$sum = 0; $n = 10; for ($i = 1; $i continue; > $sum += $i; > echo $sum;//на выходе: 25
Чтобы узнать, четное ли число, мы получаем остаток от целочисленного деления на 2 , и если он равен 0 , то с помощью оператора continue переходим к следующей итерации цикла. А если число нечетное, то складываем его с остальными нечетными числами.
Как и другие виды циклов, циклы for могут быть вложены внутрь других циклов. В следующем примере мы вкладываем цикл for внутрь другого цикла for :
$n = 9; for ($i = 1; $i echo $i * $j . ' '; > echo PHP_EOL; > //на выходе: 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
С помощью цикла for выведите на экран числа от 1 до 100.
$n = 100; for ($i = 1; $i echo $i . ' '; > //на выходе: 1 3 5 7 . 97 98 99 100
С помощью цикла for выведите на экран числа от 100 до 1.
$n = 100; for ($i = $n; $i > 0; $i--) < echo $i . ' '; > //на выходе: 100 99 98 97 . 4 3 2 1
Напишите цикл for, который печатает каждое четное число от 0 до 20. (Четное число — целое число, которое делится на 2 без остатка: −4, −2, 0, 2, 4, 6, 8,)
$n = 20; for ($i = 0; $i echo $i . ' '; > //на выходе: 0 2 4 6 8 10 12 14 16 18 20
Напишите цикл for, который печатает каждое нечетное число от 0 до 20. (Нечетное число — целое число, которое не делится на 2 без остатка: −3, −1, 1, 3, 5, 7, 9)
$n = 20; for ($i = 1; $i echo $i . ' '; > //на выходе: 1 3 5 7 9 11 13 15 17 19
Дополнительные упражнения с циклом for
Перед тем как набрать этот код, попытайтесь понять, что он делает.
$n = 3; for ($i = 1; $i < $n; $i = $i + 1) < for ($j = 1; $j < $n; $j = $j + 1) < for ($k = 1; $k < $n; $k = $k + 1) < echo "I: , J: , K: " . PHP_EOL; > > >
I: 1, J: 1, K: 1 I: 1, J: 1, K: 2 I: 1, J: 2, K: 1 I: 1, J: 2, K: 2 I: 2, J: 1, K: 1 I: 2, J: 1, K: 2 I: 2, J: 2, K: 1 I: 2, J: 2, K: 2
Примеры циклов for php
Для совершения повторяемых действий в PHP, как и в других языках программирования, используются циклы. В PHP имеются следующие виды циклов:
Цикл for
Цикл for имеет следующее формальное определение:
for ([инициализация счетчика]; [условие]; [изменение счетчика]) < // действия >
Рассмотрим стандартный цикл for:
Первая часть объявления цикла — $i = 1 — создает и инициализирует счетчик — переменную $i. И перед выполнением цикла его значение будет равно 1. По сути это то же самое, что и объявление переменной.
Третья часть — $i++ — изменение счетчика на единицу. Опять же нам необязательно увеличивать на единицу. Можно уменьшать: $i—. Или, например, увеличить не на 1, на 3: $i +=3 .
В итоге блок цикла сработает 9 раз, пока значение $i не станет равным 10. И каждый раз это значение будет увеличиваться на 1. Каждое отдельное повторение цикла называется итерацией. Таким образом, в данном случае произойдет 9 итераций.
В итоге браузер отобразит нам следующий результат:
Квадрат числа 1 равен 1 Квадрат числа 2 равен 4 Квадрат числа 3 равен 9 Квадрат числа 4 равен 16 Квадрат числа 5 равен 25 Квадрат числа 6 равен 36 Квадрат числа 7 равен 49 Квадрат числа 8 равен 64 Квадрат числа 9 равен 81
Объявление цикла for может опускать отдельный части. Например, опустить определение счетчика (он может быть определен вне цикла):
Можно опустить изменение значения счетчика и изменять его внутри цикла:
В данном случае в цикле на каждой итерации переменная $i увеличивает значение на 2. Соответственно мы получим следующий результат:
Также можно в объявлении цикла определять и использовать сразу несколько переменных:
В данном случае в объявлении цикла определяются две переменных: $i и $j. При каждой итерации переменная $i увеличивается на 1, а $j — на 2. При этом цикл продолжается, пока сумма двух переменных не достигнет 10:
Также можно применять альтернативный синтаксис, при котором вместо открывающей фигурной скобки ставится двоеточие, а вместо закрывающей фигурной скобки — ключевое слово endfor :
Цикл while
Цикл while проверяет истинность некоторого условия, и если условие истинно, то выполняются блок выражений цикла:
Если в блоке while всего одна инструкция, то фигурные скобки блока можно опустить:
Также можно применять альтернативный синтаксис, при котором вместо открывающей фигурной скобки ставится двоеточие, а вместо закрывающей фигурной скобки — ключевое слово endwhile :
$counter = 1; while($counter<10): echo $counter * $counter . "
"; $counter++; endwhile;
Цикл do..while
Цикл do..while похож на цикл while , только теперь выполняется блок цикла, и только потом выполняется проверка условия. То есть даже если условие ложно, то блок цикла выполнится как минимум один раз:
Операторы continue и break
Иногда возникает ситуация, когда требуется выйти из цикла, не дожидаясь его завершения. В этом случае мы можем воспользоваться оператором break :
80) < break; >echo "Квадрат числа $i равен $result
"; > ?>
И если вдруг результат операции окажется больше 80, то происходит выход из цикла.
Для управления циклами также применяется оператор continue . Он осуществляет переход к следующей итерации цикла:
echo "Квадрат числа $i равен " . $i * $i . "
"; > ?>
При выполнении программы, когда значение $i станет равным 5, произойдет переход к следующей итерации, а все остальные выражения, которые следуют после оператора continue выполняться не будут.
Вложенные циклы
Циклы могут располагаться внутри циклов. Например, используем вложенный цикл, чтобы вывести таблицу умножения:
" . $i * $j . " | "; > echo ""; > ?>
После 9 итераций, когда переменная $j достигнет 10, вложенный цикл завершается, и внешний цикл выводит закрывающий тег строки:
И запускается новая итерация внешнего цикла.
В итоге скрипт сформирует таблицу умножения:
Использование циклов в PHP
PHP имеет четыре вида циклов и операторы управления ими, рассмотрим поподробнее.
Foreach – перебор массива
Предназначен для перебора элементов массива.
$array = array( 1 => 'Значение 1', 2 => 'Значение 2', 3 => 'Значение 3', 4 => 'Значение 4', ); // Вывод ключей foreach ($array as $key => $val) < echo $key . '
'; > // Вывод значений foreach ($array as $key => $val) < echo $val . '
'; >
Результат:
1 2 3 4 Значение 1 Значение 2 Значение 3 Значение 4
Альтернативный синтаксис foreach
For – цикл с счетчиком
Цикл работает пока выполняется заданное условие. Обычно применяется в качестве счетчика.
// Счетчик от 0 до 5 for ($n = 0; $n // Счетчик от 5 до 0 for ($n = 5; $n >= 0; $n--)
Результат:
Альтернативный синтаксис
$array = array( 'Значение 1', 'Значение 2', 'Значение 3', 'Значение 4', ); for ($n = 0; $n < count($array); $n++) < echo $array[$n] . '
'; >
Результат:
Значение 1 Значение 2 Значение 3 Значение 4
Альтернативный синтаксис for
While – цикл с предусловием
Т.е. если перед началом итерации условие выполняется, то цикл продолжает свою работу.
Результат:
Альтернативный синтаксис while
Do-while – цикл с постусловием
В отличии от while этот цикл проверяет выполнения условия после каждой итерации. Do-while не имеет альтернативного синтаксиса.
Результат:
Управление циклами
Break
Вызов break или break 1 в цикле останавливает его.
Для вложенных циклов используется break 2 и т.д.
Continue
Используется для пропуска итерации.
Результат:
Для вложенных циклов по аналогии с break 2 , break 3 – continue 2 , continue 3 .
Примеры циклов for php
Цикл for самый сложный цикл в PHP. Он ведёт себя так же, как и в языке C. Синтаксис цикла for следующий:
for (expr1; expr2; expr3) statement
Первое выражение ( expr1 ) всегда вычисляется (выполняется) только один раз в начале цикла.
В начале каждой итерации оценивается выражение expr2 . Если оно принимает значение true , то цикл продолжается и выполняются вложенные операторы. Если оно принимает значение false , выполнение цикла заканчивается.
В конце каждой итерации выражение expr3 вычисляется (выполняется).
Каждое из выражений может быть пустым или содержать несколько выражений, разделённых запятыми. В expr2 все выражения, разделённые запятыми, вычисляются, но результат берётся из последнего. Если выражение expr2 отсутствует, это означает, что цикл будет выполняться бесконечно. (PHP неявно воспринимает это значение как true , так же, как в языке C). Это может быть не так бесполезно, как вы могли подумать, так как часто необходимо прервать цикл, используя условный оператор break вместо использования выражения в цикле for , которое принимает истинное значение.
Рассмотрим следующие примеры. Все они отображают числа от 1 до 10:
for ( $i = 1 ; ; $i ++) if ( $i > 10 ) break;
>
echo $i ;
>
Конечно, первый пример кажется самым хорошим (или, возможно, четвёртый), но вы можете обнаружить, что возможность использовать пустые выражения в циклах for может стать удобной во многих случаях.
PHP также поддерживает альтернативный синтаксис с двоеточием для циклов for .
for (expr1; expr2; expr3): statement . endfor;
Перебор массивов как показано ниже — это обычное дело для многих пользователей.
/*
* Это массив с некоторыми данными, которые мы хотим изменить
* при работе цикла.
*/
$people = array(
array( ‘name’ => ‘Kalle’ , ‘salt’ => 856412 ),
array( ‘name’ => ‘Pierre’ , ‘salt’ => 215863 )
);
?php
for( $i = 0 ; $i < count ( $people ); ++ $i ) $people [ $i ][ 'salt' ] = mt_rand ( 000000 , 999999 );
>
?>
Вышеприведённый код может работать медленно, так как размер массива вычисляется в каждой итерации. Поскольку размер не меняется, цикл может быть легко оптимизирован с помощью промежуточной переменной, в которую будет записан размер массива, вместо повторяющихся вызовов функции count() :
$people = array(
array( ‘name’ => ‘Kalle’ , ‘salt’ => 856412 ),
array( ‘name’ => ‘Pierre’ , ‘salt’ => 215863 )
);
?php
for( $i = 0 , $size = count ( $people ); $i < $size ; ++ $i ) $people [ $i ][ 'salt' ] = mt_rand ( 000000 , 999999 );
>
?>