Russian (Pусский) translation by Anna Goorikova (you can also view the original English article)
Сегодня мы обсудим структуры управления и циклы в PHP. Я покажу вам, как использовать все основные структуры управления, которые поддерживаются в PHP, например, if, else, foreach, while и многое другое.
Что такое структура управления?
Проще говоря, структура управления позволяет вам контролировать поток выполнения кода в вашем приложении. Как правило, программа выполняется последовательно, по очереди, а структура управления позволяет вам изменять этот поток, обычно в зависимости от определенных условий.
Структуры управления - это основные функции языка PHP, которые позволяют вашему сценарию реагировать по-разному на разные входные данные или ситуации. Это может позволить вашему сценарию давать разные ответы на основе пользовательского ввода, содержимого файла или некоторых других данных.
Следующая блок-схема объясняет, как структура управления работает в PHP.

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

В приведенном выше примере программа проверяет, вошел ли пользователь в систему. На основе состояния входа пользователя они будут перенаправлены на страницу входа Login или на страницу учетной записи My Account. В этом случае структура управления завершает выполнение кода, перенаправляя пользователей на другую страницу. Это ключевая способность языка PHP.
PHP поддерживает несколько различных структур управления:
if
else
elseif
switch
while
- do-while
for
foreach
- и другие
Давайте рассмотрим некоторые из этих структур управления на примерах.
Проходим через различные управляющие структуры
В предыдущем разделе мы изучили основы структур управления в PHP и их полезность при разработке приложений. В этом разделе мы рассмотрим пару важных структур управления, которые вы часто используете в повседневной разработке приложений.
If
Конструкция if
позволяет вам выполнить часть кода, если прилагаемое выражение вместе с ней оценивается как true.
Давайте посмотрим на следующий пример, чтобы понять, как это работает.
<?php $age = 50; if ($age > 30) { echo "Your age is greater than 30!"; } ?>
Вышеприведенный пример должен выводить Ваш возраст больше 30!
потому что выражение принимает значение true. Фактически, если вы хотите выполнить только один оператор, приведенный выше пример можно переписать, как показано в следующем фрагменте без скобок.
<?php $age = 50; if ($age > 30) echo "Your age is greater than 30!"; ?>
С другой стороны, если у вас есть несколько операторов для выполнения, вы должны использовать скобки, как показано в следующем фрагменте.
<?php if (is_array($user)) { $user_id = isset($user['user_id']) ? $user['user_id'] : ''; $username = isset($user['username']) ? $user['username'] : ''; // and more statements... } ?>
Else
В предыдущем разделе мы обсудили конструкцию if
, которая позволяет вам выполнить кусок кода, если выражение оценивается как true. С другой стороны, если выражение оценивается как false, оно ничего не сделает. Чаще всего вы также хотите выполнить другой фрагмент кода, если выражение принимает значение false. Вот где выражение else
появляется на картинке.
Вы всегда используете оператор else
в сочетании с оператором if
. В принципе, вы можете определить его, как показано в следующем псевдокоде.
if (expression) { // code is executed if the expression evaluates to TRUE } else { // code is executed if the expression evaluates to FALSE }
Давайте рассмотрим предыдущий пример, чтобы понять, как он работает.
<?php $age = 50; if ($age < 30) { echo "Your age is less than 30!"; } else { echo "Your age is greater than or equal 30!"; } ?>
Поэтому, когда у вас есть два варианта, и один из них должен быть выполнен, вы можете использовать конструкцию if-else
.
Else If
Мы можем рассматривать оператор elseif
как расширение конструкции if-else
. Если у вас есть более двух вариантов на выбор, вы можете использовать инструкцию elseif
.
Давайте рассмотрим базовую структуру инструкции elseif
, как показано в следующем псевдокоде.
if (expression1) { // code is executed if the expression1 evaluates to TRUE } elseif (expression2) { // code is executed if the expression2 evaluates to TRUE } elseif (expression3) { // code is executed if the expression3 evaluates to TRUE } else { // code is executed if the expression1, expression2 and expression3 evaluates to FALSE, a default choice }
Опять же, давайте попробуем понять это, используя реальный пример из жизни.
<?php $age = 50; if ($age < 30) { echo "Your age is less than 30!"; } elseif ($age > 30 && $age < 40) { echo "Your age is between 30 and 40!"; } elseif ($age > 40 && $age < 50) { echo "Your age is between 40 and 50!"; } else { echo "Your age is greater than 50!"; } ?>
Как вы можете видеть в приведенном выше примере, у нас есть несколько условий, поэтому мы использовали ряд инструкций elseif
. В случае, если все условия if
равны false, он выполняет код, указанный в последнем объявлении else
.
Switch
Оператор switch несколько похож на оператор elseif
, который мы только что обсуждали в предыдущем разделе. Единственное отличие - это проверенное выражение.
В случае конструкции elseif
у вас есть набор различных условий, и соответствующее действие будет выполнено на основе условия. С другой стороны, если вы хотите сравнить переменную с разными значениями, вы можете использовать оператор switch
.
Как обычно, пример это лучший способ понять оператор switch
.
<?php $favourite_site = 'Code'; switch ($favourite_site) { case 'Business': echo "My favourite site is business.tutsplus.com!"; break; case 'Code': echo "My favourite site is code.tutsplus.com!"; break; case 'Web Design': echo "My favourite site is webdesign.tutsplus.com!"; break; case 'Music': echo "My favourite site is music.tutsplus.com!"; break; case 'Photography': echo "My favourite site is photography.tutsplus.com!"; break; default: echo "I like everything at tutsplus.com!"; } ?>
Как вы можете видеть в приведенном выше примере, мы хотим проверить значение переменной $favourite_site
и на основе значения переменной $favourite_site
мы хотим вывести сообщение.
Для каждого значения, которое вы хотите проверить с помощью переменной $favourite_site
, вы должны определить блок case
. Если значение сопоставляется с case, будет выполняться код, связанный с этим блоком. После этого вам нужно использовать оператор break
для завершения выполнения кода. Если вы не используете оператор break
, выполнение скрипта будет продолжено до последнего блока в инструкции switch.
Наконец, если вы хотите выполнить кусок кода, если значение переменной не соответствует ни одному случаю, вы можете определить его в блоке default
. Конечно, это не обязательно - это всего лишь способ предоставить случай по умолчанию.
Это был обзор структур условного контроля. Мы обсудим циклы в PHP в следующем разделе.
Циклы
Циклы в PHP полезны, если вы хотите выполнить часть кода несколько раз, пока условие не примет значение false. Поэтому код выполняется несколько раз, пока условие оценивается как true, и как только условие оценивается как false, скрипт продолжает выполнение кода после цикла.
Следующая блок-схема объясняет, как циклы работают в PHP.

Как вы можете видеть на скриншоте выше, цикл содержит условие. Если условие принимает значение true, выполняется условный код. После выполнения условного кода управление возвращается к условию цикла, и поток продолжается до тех пор, пока условие не примет значение false.
В этом разделе мы рассмотрим различные типы циклов, поддерживаемых в PHP.
Цикл While
Цикл while
используется, если вы хотите выполнить часть кода несколько раз, пока условие while
не примет значение false.
Вы можете использовать его, как показано в следующем псевдокоде.
while (expression) { // code to execute as long as expression evaluates to TRUE }
Давайте рассмотрим пример из жизни, чтобы понять, как работает цикл while
в PHP.
<?php $max = 0; echo $i = 0; echo ","; echo $j = 1; echo ","; $result=0; while ($max < 10 ) { $result = $i + $j; $i = $j; $j = $result; $max = $max + 1; echo $result; echo ","; } ?>
Если вы знакомы с серией Фибоначчи, вы можете узнать, что делает вышеуказанная программа, - она выводит ряд Фибоначчи для первых десяти чисел. Цикл while
обычно используется, когда вы не знаете количество итераций, которые будут выполняться в цикле.
Цикл Do-While
Цикл do-while
очень похож на цикл while
, с той лишь разницей, что условие while проверяется в конце первой итерации. Таким образом, мы можем гарантировать, что код цикла выполняется хотя бы один раз, независимо от результата выражения while.
Давайте посмотрим на синтаксис цикла do-while
.
do { // code to execute } while (expression);
Давайте рассмотрим реальный пример, чтобы понять возможные ситуации, где вы можете использовать цикл do-while
.
<?php $handle = fopen("file.txt", "r"); if ($handle) { do { $line = fgets($handle); // process the line content } while($line !== false); } fclose($handle); ?>
В приведенном выше примере мы пытаемся прочитать файл по строкам. Во-первых, мы открыли файл для чтения. В нашем случае мы не уверены, содержит ли файл какой-либо контент. Таким образом, нам нужно выполнить функцию fgets
хотя бы один раз, чтобы проверить, содержит ли файл какой-либо контент. Поэтому мы можем использовать цикл do-while
. do-while
оценивает условие после первой итерации цикла.
Цикл For
Как правило, цикл for
используется для выполнения фрагмента кода для определенного количества раз. Другими словами, если вы уже знаете, сколько раз вы хотите выполнить блок кода, это лучший выбор это цикл for
.
Давайте посмотрим на синтаксис цикла for
.
for (expr1; expr2; expr3) { // code to execute }
Выражение expr1
используется для инициализации переменных и всегда выполняется. Выражение expr2
также выполняется в начале цикла, и если оно вычисляется как true, выполняется код цикла. После выполнения кода цикла выполняется expr3
. Как правило, expr3
используется для изменения значения переменной, которая используется в выражении expr2
.
Давайте рассмотрим следующий пример, чтобы узнать, как это работает.
<?php for ($i=1; $i<=10; ++$i) { echo sprintf("The square of %d is %d.</br>", $i, $i*$i); } ?>
Вышеупомянутая программа выводит квадрат первых десяти чисел. Он инициализирует $i
равной 1, повторяет до тех пор, пока $i
меньше или равно 10, и добавляет 1 к $i
на каждой итерации.
For Each
Цикл foreach
используется для итерации по переменным массива. Если у вас есть переменная массива, и вы хотите пройти через каждый элемент этого массива, лучший выбор это цикл foreach
.
Давайте рассмотрим несколько примеров.
<?php $fruits = array('apple', 'banana', 'orange', 'grapes'); foreach ($fruits as $fruit) { echo $fruit; echo "<br/>"; } $employee = array('name' => 'John Smith', 'age' => 30, 'profession' => 'Software Engineer'); foreach ($employee as $key => $value) { echo sprintf("%s: %s</br>", $key, $value); echo "<br/>"; } ?>
Если вы хотите получить доступ к значениям массива, вы можете использовать первую версию цикла foreach
, как показано в приведенном выше примере. С другой стороны, если вы хотите получить доступ к ключу и значению, вы можете сделать это, как показано в примере $employee
выше.
Заключение
В этой статье мы обсудили различные структуры управления и петли в PHP. Они являются неотъемлемой частью PHP или любого языка программирования.
Надеюсь, вам понравилась эта статья, и если у вас есть какие-либо вопросы, не стесняйтесь спрашивать их, используя приведенный ниже канал.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post