Циклы foreach, for, while в PHP

Опубликовано: Август 25, 2018 в 11:16 дп

Продолжаем писать наш конспект. Сегодня рассмотрим циклы  foreach, for, while в PHP. Цикл используют, чтобы участок кода выполнился подряд несколько раз .

Цикл foreach

Используется для прохода по всем элементам массива.

Синтаксис:  foreach($arr as $elem) {код, который будет выполняться для каждого элемента}
где $arr - массив,  $elem - переменная в которую лягут элементы массива.

Примеры:

<?php
$arr = [1, 2, 3, 4, 5]; // массив
foreach ($arr as $elem)
{
echo $elem.'<br>';
}
?>

Выведет в столбик все элементы массива с 1 до 5.

А сейчас возведем каждый элемент в квадрат:

<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
echo $elem*$elem . '<br>';
}
?>

Выведет в столбик квадраты элементов массива.
Если массив ассоциативный, то после as следует указать: $ключ => $элемент.

Давайте  при каждом проходе цикла выведем ключ массива и соответствующий ему элемент через дефис:

<?php
$arr = ['a'=>1, 'b'=>2, 'c'=>3, 'd'=>4, 'e'=>5]; //ассоциативный массив
foreach ($arr as $key=>$elem) {
echo $key.'-'.$elem;
}
?>

выведет: 'a-1', 'b-2', 'c-3' и т.д.
Если не нужны ключи, то $ключ=> можно не писать:

<?php
$arr = ['a'=>1, 'b'=>2, 'c'=>3, 'd'=>4, 'e'=>5];
foreach ($arr as $elem) {
echo $elem;
}
?>

Цикл foreach имеет альтернативный синтаксис: Фигурных скобок нет, а цикл закрыт командой endforeach:

<?php
$arr = ['a'=>1, 'b'=>2, 'c'=>3, 'd'=>4, 'e'=>5];
foreach ($arr as $elem): //внимание на двоеточие!
echo $elem;
endforeach;
?>

Как и в конструкции if-else, можно закрыть скобки PHP внутри цикла, вписать что-то на HTML и открыть скобки – HTML код повторится столько раз, сколько проходов сделает цикл:

<?php
$arr = ['a'=>1, 'b'=>2, 'c'=>3, 'd'=>4, 'e'=>5];
foreach ($arr as $elem) {
?>
<p>здесь html-код в который еще и php вставлен{<?php echo $elem; ?>} можно и так</p>
<?php
}
?>

Цикл while

Выполняется, пока верно выражение в скобках,  синтаксис:

<?php
while ( условие ) {
выполняемый код;
}
?>
При каждом проходе цикл проверяет условие в круглых скобках:
если верно - выполняется код в фигурных скобках,
если нет - цикл завершается.
Выведем с помощью while столбец от одного до пяти.

В условии  поставим $i <= 5 - т.е. пока $i будет меньше или равна пяти - цикл работает, как только  станет 6 - цикл закончит свою работу.
Изначально $i =1. При каждом проходе будем выводить $i и затем оператором ++каждый раз увеличивать ее на единицу.

<?php
$i = 1;
while ($i <= 5) {
echo $i.'<br>';
$i++;
}
?>

Переменную $i, называют счетчиком цикла и используют для выполнения цикла нужное количество раз. Для счетчиков используют буквы i, j и k.

Бесконечный цикл!!!
Цикл while может выполняться бесконечно (это приведет к зависанию скрипта!), если передать ему условие, которое никогда не станет ложным. Например, так:

$var = true;
while ($var === true) {nnn
}
Написанный здесь код будет выполняться 'вечно' - это приведет к зависанию!

Цикл for

Цикл for - альтернатива while. Синтаксис:

<?php
for ( команда перед циклом; условие окончания цикла; команда после прохода цикла ) {
тело цикла
}
?>

Выведем числа от 0 до 9 циклом for. В начале цикла $i =0, цикл выводим пока $i < 10,
после прохода к $i прибавляем единицу:

<?php
for ($i = 0; $i < 10; $i++) {
echo $i.'<br>';
}
?>

Если необходимо выполнить несколько команд в круглых скобках - пишем их через запятую:

<?php
for ($i = 0, $j = 2; $i < 10; $i++, $j++, $i = $i + $j) {

}
?>
До начала цикла выполнятся две команды: $i = 0, $j = 2, а после каждого прохода - целых три: $i++, $j++, $i = $i + $j.

Инструкция break
Иногда необходимо прервать выполнение цикла досрочно, в случае с циклом foreach до того, как цикл пройдет все элементы массива.

Например, оборвем цикл, как только  встретим число 3:

<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3)
break; //выходим из цикла
else
echo $elem;
}
?>

Если очень кратко о циклах foreach, for, while в PHP , все. Не забудьте повторить Условные операторы if else, switch case

Понравился сайт? Поделись!

Всего комментариев: 0

Оставить комментарий

Ваш email не будет опубликован.