Урок по циклам в PHP: цикл for с примерами

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

Оператор цикла for в PHP

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

for будет одним из самых сложных видов цикла. В PHP цикл for ведет себя аналогично C. Ниже приведена структура синтаксиса:

for(expression1;expression2;expression3)statement;

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

Как работает цикл for в PHP?

Чтобы понять, как работает цикл for, нам необходимо понять данные три выражения. Выражение: expresison1 будет первым, которое выполняется только один раз перед входом в цикл. Оно выполняется безоговорочно. Это значит, что первый раз перед входом в цикл выражение будет выполнено.

Expresison1 называется инициализирующим выражением, так как оно используется для инициализации счетчика, который используется в выражениях expression2 и expression3.

Expression2(проверка условия) проверяется для того, чтобы определить разрешает ли условие выполнить инструкцию или нет. Первый раз оно запускается после expression1, далее — перед входом в цикл.

Обычно expression2 включает условный оператор, чтобы проверить, возвращает ли условие true или false. Если условие вернет true, тогда будет выполняться оператор, написанный в цикле.

Expression3 выполняется в конце каждой итерации после оператора цикла. Обычно программисты называют его выражением инкремента. Оно используют это выражение для увеличения значения счетчика, который был инициализирован в expression1 и проанализирован в expression2.

Все три выражения не являются обязательными. Также можно легко создать PHP цикл, как показано ниже:

for(;;)statement;

Или

for(;expression2;expression3)statement;

Если у нас пару строк в цикле for, используйте фигурные скобки, как показано ниже:

for(expression1;expression2;expression3){statement1;statement2;statement3;}

Блок-схема цикла for

На первом шаге выполняется выражение expression1. Если вы внимательно посмотрите блок-схему, то обнаружите, что для expression1 не существует условия. Выражение expression1 похоже на поток выполняемой программы.

На следующем шаге сразу же после выражения expression1 выполняется expression2. Оно проверяет, выполняется ли условие цикла. Если условие истинно, то дальше будет выполняться цикл, иначе поток выйдет из цикла.

Если expression2 вернет true, то на третьем шаге будет выполнен оператор, написанный в цикле for. После этого будет выполнено третье выражение expression3.

После выполнения выражения expression3 поток снова проверяет expression2, и цикл продолжается до тех пор, пока expression2 не вернет false.

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

Рассмотрим случай, когда необходимо вывести на экран числа от 1 до 10 через запятую. Ниже приведен программный код:

for($i=1;$i<=10;$i++)print $i.',';

Или с фигурной скобкой:

for($i=1;$i<=10;$i++){print $i.',';}

Выражение $i=1 будет expression1, которое выполняется безоговорочно. Мы используем expression1 для инициализации переменной, равной $i=1.

Expression2 – это выражение $i:

$i=1;for(;$i<=10;$i++){print $i.',';}

Или так:

$i=1;for(;$i<=10;){print $i.',';$i++;}

Сложное выражение в цикле for

Можно написать три выражения в цикле for. Мы можем написать пару операторов в каждом выражении в цикле for. Операторы необходимо разделить запятой.

Рассмотрим пример предыдущего кода для вывода числа от 1 до 10. При помощи нескольких операторов в выражении можно написать код, приведенный ниже:

for($i=1; $i<=10; print $i. ',', $i++);

Здесь выражение expression3 – это print $i.’,’, $i++, которое объединяет два оператора, один – print $i. ‘,’, а второй – $ i++.

Выше приведен пример, в котором мы использовали пару операторов в выражении expression3. Но также можно использовать пару операторов в любом выражении. К примеру:

for($i=1, print 'Hi Loop is from Here'; $i<=10; print $i. ',', $i++);

Аналогично можно вывести все нечетные числа меньше 10 при помощи следующего кода:

for($i=1, print 'Hi Loop is from Here'; $i<=10; print $i. ',', $i=$i+2);

Массив и цикл for в PHP

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

$names = array('Ankur', 'John', 'Joy');$count = count($names);for($counter=0;$counter<$count;$counter++){print $names[$counter];}

Также можно использовать многомерный массив в цикле for :

$names = array(array('id' => 1, 'name' => 'Ankur'),array('id' => 2, 'name' => 'Joe'),array('id' => 3, 'name' => 'John'),);$count = count($names);for ($counter = 0; $counter < $count; $counter++) {print 'Name'.$names[$counter]['name'].' ID'.$names[$counter]['id']."n";}

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

Можно использовать вложенный цикл for в PHP . Пример:

$metrix = array(array(1, 2, 3),array(2, 1, 3),array(3, 2, 1),);$count = count($metrix);for ($counter = 0; $counter < $count; $counter++) {$c_count = count($metrix[$counter]);for ($child = 0; $child < $c_count; $child++) {echo $metrix[$counter][$child];}}

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

При использовании вложенного цикла можно без труда использовать выражение родительского цикла for в дочернем. К примеру:

for ($i = 1; $i <= 5; $i++) {for ($j = 1; $j <= $i; $j++) {echo "*";}echo "<br>";}

Приведенная выше программа будет одной из самых популярных для вывода символа * в форме прямоугольного треугольника.

Инкремент в цикле for

Почти в каждом из приведенных выше примеров мы использовали выражение expression3 , то есть последнее выражение в виде инструкции инкремента. Также мы часто увеличивали значение на единицу во всех примерах, к примеру, $i++ или $j++ и так далее. Но мы можем увеличивать счетчик в соответствии с нашими требованиями. Например, чтобы вывести все нечетные числа от 1 до 15 , можно легко инициализировать цикл значением 1 и выполнять итерации до 15 , увеличивая счетчик на 2 :

for($counter = 1; $counter <=15;$counter=$counter+2){print $counter.',';}

Результатом работы приведенного выше кода будет «1,3,5,7,9,11,13,15». Здесь мы увеличиваем переменную счетчика на +2 при помощи выражения $counter=$counter+2 .

Выход из цикла for

Можно прервать цикл при определенном условии, используя ключевое слово break . Оно не будет частью цикла и используется для прерывания выполнения операторов for , foreach , while , do-while и switch . Давайте посмотрим, как ключевое слово break останавливает цикл for .

Простой пример, в котором мы выводим все числа в массиве до 100 :

$series = array(1, 8, 5, 3, 100, 9, 7);for ($i = 0, $count = count($series); $i <= $count; $i++) {if (100 == $series[$i]) {break;}echo $series[$i] . ' ';}

Здесь мы прерываем цикл, проверив, равно ли значение элемента массива 100 .

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

for ($i = 0;; $i++) {switch ($i) {case 1:echo "This is one ";break 1; //Это прервет только оператор switchcase 2:echo "This is two ";break 1; // Это снова прервет только оператор switchcase 3:echo "This is three ";break 2; //Это прервет и switch , и цикл for}}

Здесь break 1 прерывает оператор switch , но break 2 прервет текущий оператор, а также родительский, то есть и switch , и for .

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

В предыдущем разделе мы узнали, как выйти из цикла. Но что, если необходимо пропустить одну итерацию цикла и вернуться назад к циклу? Для этого в PHP есть ключевое слово continue .

Вспомним пример вывода нечетных чисел. Все, что мы сделали, это начали цикл с 1 , увеличивали счетчик на 2 и выводили результат. Реализуем этот пример, используя continue :

for ($i = 0; $i < 20; $i++) {if ($i % 2 == 0) {continue;}echo $i . ',';}

В приведенном выше примере мы проверяем выражение $i%2 == 0 , и если оно верно, используя ключевое слово continue , мы пропускаем остальную часть цикла и возвращаемся к выражению expression3 ($i++) , а далее к expression2 ($i :

<select name="dob_year"><?php$current_year = date('Y');for($i=$current_year; $i <= $current_year+100;$i++ ){echo '<option value="'.$i.'">'.$i.'</option>';}?></select>

Иногда необходимо перенести данные из таблицы базы данных в массив при помощи PHP :

<?php$table_data = array(array('id' => 10001, 'name' => 'Ankur', 'country' => 'India'),array('id' => 20002, 'name' => 'Joy', 'country' => 'USA'),array('id' => 10003, 'name' => 'John', 'country' => 'UK'),array('id' => 20001, 'name' => 'Steve', 'country' => 'France'),);?><table border="1"><thead><tr><th>ID</th><th>Name</th><th>Country</th></tr></thead><?php$count = count($table_data);for ($i = 0; $i < $count; $i++) {echo '<tr>'. '<td>' . $table_data[$i]['id'] . '</td>'. '<td>' . $table_data[$i]['name'] . '</td>'. '<td>' . $table_data[$i]['country'] . '</td>'. '</tr>';}?></table>

Приведенный выше программный код будет генерировать таблицу.

Я постарался рассказать о PHP цикле for как можно проще. Но если у вас есть какие-либо вопросы, пожалуйста, задавайте их в комментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *