METANIT.COM

Изучаем 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 выполняться не будут.

Вложенные циклы

Циклы могут располагаться внутри циклов. Например, используем вложенный цикл, чтобы вывести таблицу умножения:

      "; for ($j = 1; $j < 10; $j++) < echo ""; > echo ""; > ?>
" . $i * $j . "

После 9 итераций, когда переменная $j достигнет 10, вложенный цикл завершается, и внешний цикл выводит закрывающий тег строки:

И запускается новая итерация внешнего цикла.

В итоге скрипт сформирует таблицу умножения:

Источник

Использование циклов в PHP

PHP имеет четыре вида циклов и операторы управления ими, рассмотрим поподробнее.

Foreach – перебор массива

Предназначен для перебора элементов массива.

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 – цикл с счетчиком

Цикл работает пока выполняется заданное условие. Обычно применяется в качестве счетчика.

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 – цикл с предусловием

Результат:

Альтернативный синтаксис while

Do-while – цикл с постусловием

В отличии от while этот цикл проверяет выполнения условия после каждой итерации. Do-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 )
);

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 )
);

for( $i = 0 , $size = count ( $people ); $i < $size ; ++ $i ) $people [ $i ][ 'salt' ] = mt_rand ( 000000 , 999999 );
>
?>

Источник

Читайте также:  Php чтение файла двоичного
Оцените статью