Изучаем циклы в 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; //Это прервет только оператор switch
case 2:
echo "This is two ";
break 1; // Это снова прервет только оператор switch
case 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 как можно проще. Но если у вас есть какие-либо вопросы, пожалуйста, задавайте их в комментариях.