TOC

This article has been localized into Russian by the community.

Основы PHP:

Циклы

Как и в любом другом языке программирования, возможность повторять кусок кода X раз очень важна. Это то, для чего используются циклы, и PHP предлагает 4 разных циклических механизма. В этом параграфе мы пройдем их все, разобрав их работу на примерах.

Цикл while

Это, пожалуй, самый простой из всех циклов. Он всего лишь повторяет блок кода до тех пор, пока его условие равно true. Пример может выглядеть так:

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

Попробуйте запустить этот код. Он досчитает до 4, продолжая до тех пор, пока $i не перестанет быть меньше 5. Каждый раз как цикл проходит итерацию, мы добавляем 1 к счетчику $i, а также выводит его текущее значение. Чтобы вы ни решили поместить между скобками цикла while, оно должно возвращать логическое (boolean) значение - true или false.

Цикл do-while

Этот цикла работает почти так же, как и while, с одним существенным различием: в цикле while условие проверяется до начала итерации, а в цикле do-while - в конце итерации. Это значит, что в цикле do-while гарантированно выполнится хотя бы одна итерация, а в обычном цикле while возможна ситуация, когда тело цикла не выполнится ни разу, если условие никогда не равно true. Вот пример, демонстрирующий такое поведение:

<?php
$i = 0;
do
{
    echo $i."<br>";
    $i++;
} while($i < 0);
?>

В обычном цикле while пользователю бы ничего не вывелось, поскольку $i изначально равно 0, т.е. не меньше 0. Тем не менее, раз это цикл do-while, он свободно пройдет первую итерацию. А затем, PHP обнаружит, что условие не равно true, и выйдет из цикла.

Цикл for

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

<?php
for($i = 0; $i < 5; $i++)
{
    echo $i."<br />";
}
?>

Результат работы цикла будет точно таким же, как в примере выше с циклом while, но как вы можете видеть, мы обошлись меньшим количеством строк кода. Переменная-счетчик одновременно инициализируется, проверяется и увеличивается в одной строке: Сначала мы ее объявляем и присваиваем ей значение, затем записываем условие, которое нужно проверять, а затем увеличиваем (или уменьшаем, это тоже возможно) нашу переменную. Каждая часть отделяется точкой с запятой. Цикл for изящен и компактен, и хорош во всех ситуациях, когда вам требуется следить за числом итераций.

Цикл foreach

Цикл foreach предназначен для итераций по массиву. Фактически, он может работать только с массивами, и PHP вызовет ошибку, если вы попытаетесь применить его к одиночному значению или переменной, которая не содержит массива. Цикл foreach может выступать в двух ролях. Ниже представлен пример первой. Ах да, поскольку мы еще не рассматривали массивы, думайте о них как о списке элементов. В одном из следующих параграфов мы рассмотрим, что такое массивы и как с ними работать.

<?php
$animals = array("Dog", "Cat", "Snake", "Tiger");

foreach($animals as $animal)
    echo $animal . "<br />";
?>

Прелесть цикла foreach заключается в том, что он изначально спроектирован для работы исключительно с циклами, что делает весь процесс гораздо проще. На каждой итерации переменной $animal присваивается значение из текущей позиции в массиве, что упрощает доступ к ней. Этот маленький фрагмент кода просто выводит список элементов (в нашем случае животных) из массива.

В этой версии цикла foreach мы получили доступ только к значениям массива. Однако, каждый элемент массива состоит из ключа и значения. В нашем примере, мы позволили PHP назначать ключи автоматически, не устанавливая их явно. Это детально объясняется в параграфе про массивы. В случае, если вам нужен доступ также к ключу текущего массива, используйте второй вариант конструкции foreach, как показано ниже:

<?php
$animals = array(1 => "Dog", "Cat", "Snake",    "Tiger");

foreach($animals as $key => $value)
    echo "Animal number " . $key . " is a " . $value . "<br />";
?>

Вот так просто.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!