PHP: Цикл for

Цикл for

Синтаксис цикла for выглядит следующим образом:

синтаксис цикла for в PHP

Данный цикл состоит из ключевого слова for, за которым следуют круглые скобки, содержащие внутри три выражения, разделенных точками с запятой. Он имеет следующий порядок выполнения:

  1. В начале цикла выполняется инициализирующее выражение, оно всегда вычисляется (выполняется) только один раз в самом начале.
  2. Далее следует условное выражение. Перед началом каждой итерации вычисляется значение условного выражения (условие выполнения), если оно принимает значение TRUE, то тело цикла выполняется, если оно принимает значение FALSE, выполнение цикла завершается. Если при первой проверке условие оказывается ложным, тело цикла не выполнится ни разу.
  3. В самом конце, после выполнения действий в теле цикла обрабатывается последнее выражение (следующее выражение после условия). В данном случае это инкрементирующее выражение - оно увеличивает с помощью инкремента значение переменной-счетчика.

Простой пример цикла for:

<?php

  for ($k = 1; $k <= 10; $k++) {
    echo "$k ";
  }
  
?>

На самом деле цикл for является почти универсальным, поскольку он допускает самые разные варианты своего применения.

Цикл for без частей заголовка

Каждое из выражений в заголовке цикла for может отсутствовать.

Если инициализация не нужна или происходит в другом месте, инициализирующее выражение не нужно. Перепишем немного предыдущий пример:

<?php
  
  $k = 1;

  for (; $k <= 10; $k++) {
    echo "$k ";
  }
  
?>

Обратите внимание, символ точки с запятой обязателен, так как означает отсутствующее выражение. Отсутствие выражения условия эквивалентно расположению в условии значения TRUE.

<?php

  for ($k = 1;/* нет условия */; $k++) {
    echo "$k ";
  }
  
  // Это эквивалентно следующему коду
  for ($k = 1; true; $k++) {
    echo "$k ";
  }
  
?>

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

<?php

  for ($k = 1; $k <= 10; /* нет выражения */) {
    echo "$k ";
	// значение переменной $k должно изменяться в теле цикла
	// иначе он не завершится
	
	$k++;
  }
  
  // можно убрать все выражения, получив бесконечный цикл
  for (;;) { 
    //...
  }
  
?>

Не стоит забывать о том, что любое из трех выражений или все сразу можно опустить, но разделительные точки с запятой (;) следует ставить всегда.

Несколько выражений в заголовке цикла for

В заголовке цикла for каждое выражение разделенное точкой с запятой может содержать по несколько выражений, разделенных запятыми. Поэтому можно использовать выражения любой сложности.

<?php

  for ($bar = 10, $foo = 1; $foo <= 10; $bar--, $foo++) {
    echo "\$foo: $foo \$bar: $bar
"; } ?>

Если в условии выполнения используется несколько выражений, разделенных запятыми, то они вычисляются все, но результат берется из последнего.

<?php

  // не выполнится так как последнее выражение false
  for ($k = 1; $k <= 10, false; $k++) {
    echo "$k ";
  }
  
?>

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

Так же как и условные операторы, циклы могут быть вложенными. Простой пример с одним уровнем вложенности:

<?php

  for ($i = 0; $i < 4; $i++) {
    echo "Внешний цикл.<br>";
    for ($j = 0; $j < 2; $j++) {
      echo "Вложенный цикл.<br>";
    }
  }
  
?>
Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011-2016 © puzzleweb.ru

Реклама на сайте | puzinfo@puzzleweb.ru