Статьи

Структуры и циклы управления PHP: if, else, for, foreach, while и More

Сегодня мы собираемся обсудить управляющие структуры и циклы в PHP. Я покажу вам, как использовать все основные управляющие структуры, которые поддерживаются в PHP, например if, else, for, foreach, while и другие.

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

Управляющие структуры являются основными функциями языка PHP, которые позволяют вашему сценарию по-разному реагировать на различные входные данные или ситуации. Это может позволить вашему сценарию давать разные ответы на основе пользовательского ввода, содержимого файла или некоторых других данных.

Следующая блок-схема объясняет, как работает структура управления в PHP.

Если условие потока

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

Давайте рассмотрим следующий пример.

Поток условий If-Else

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

PHP поддерживает ряд различных структур управления:

  • if
  • else
  • elseif
  • switch
  • while
  • dowhile
  • for
  • foreach
  • и более

Давайте рассмотрим некоторые из этих структур управления с примерами.

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

Конструкция if позволяет выполнить фрагмент кода, если предоставленное вместе с ним выражение оценивается как true.

Давайте посмотрим на следующий пример, чтобы понять, как он на самом деле работает.

1
2
3
4
5
6
7
8
<?php
$age = 50;
 
if ($age > 30)
{
  echo «Your age is greater than 30!»;
}
?>

Приведенный выше пример должен вывести Your age is greater than 30! сообщение, так как выражение оценивается как true. Фактически, если вы хотите выполнить только один оператор, приведенный выше пример можно переписать, как показано в следующем фрагменте без скобок.

1
2
3
4
5
6
<?php
$age = 50;
 
if ($age > 30)
  echo «Your age is greater than 30!»;
?>

С другой стороны, если вам нужно выполнить более одного оператора, вы должны использовать скобки, как показано в следующем фрагменте.

1
2
3
4
5
6
7
8
<?php
if (is_array($user))
{
  $user_id = isset($user[‘user_id’]) ?
  $username = isset($user[‘username’]) ?
  // and more statements…
}
?>

В предыдущем разделе мы обсуждали конструкцию if , которая позволяет вам выполнить фрагмент кода, если выражение оценивается как true. С другой стороны, если выражение оценивается как ложное, оно ничего не будет делать. Чаще всего вы также хотите выполнить другой фрагмент кода, если выражение оценивается как ложное. Вот где заявление else входит в картину.

Вы всегда используете оператор else в сочетании с оператором if . По сути, вы можете определить его, как показано в следующем псевдокоде.

1
2
3
4
5
6
7
8
if (expression)
{
  // code is executed if the expression evaluates to TRUE
}
else
{
  // code is executed if the expression evaluates to FALSE
}

Давайте пересмотрим предыдущий пример, чтобы понять, как он работает.

01
02
03
04
05
06
07
08
09
10
11
12
<?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 .

Мы можем рассматривать оператор elseif как расширение конструкции if-else . Если у вас есть более двух вариантов выбора, вы можете использовать оператор elseif .

Давайте изучим основную структуру оператора elseif , как показано в следующем псевдокоде.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
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
}

Опять же, давайте попробуем понять это на примере реального мира.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?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 . Если все условия оцениваются как ложные, выполняется код, указанный в последнем операторе else .

Оператор switch несколько похож на оператор elseif который мы только что обсуждали в предыдущем разделе. Единственное отличие — это выражение, которое проверяется.

В случае оператора elseif вас есть набор различных условий, и соответствующее действие будет выполнено на основе условия. С другой стороны, если вы хотите сравнить переменную с другими значениями, вы можете использовать оператор switch .

Как обычно, пример — лучший способ понять оператор switch .

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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 . Если значение соответствует регистру, будет выполнен код, связанный с этим блоком регистра. После этого вам нужно использовать оператор break для завершения выполнения кода. Если вы не используете оператор break , выполнение скрипта будет продолжено до последнего блока в операторе switch.

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

Такова история условных структур управления. Мы обсудим циклы в PHP в следующем разделе.

Циклы в PHP полезны, когда вы хотите выполнить фрагмент кода несколько раз, пока условие не станет ложным. Таким образом, код выполняется многократно, пока условие оценивается как true, и как только условие оценивается как false, скрипт продолжает выполнять код после цикла.

Следующая блок-схема объясняет, как циклы работают в PHP.

Loop Flow

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

В этом разделе мы рассмотрим различные типы циклов, поддерживаемых в PHP.

Цикл while используется, когда вы хотите выполнить фрагмент кода несколько раз, пока условие while не станет ложным.

Вы можете определить его, как показано в следующем псевдокоде.

1
2
3
4
while (expression)
{
  // code to execute as long as expression evaluates to TRUE
}

Давайте посмотрим на реальный пример, чтобы понять, как работает цикл while в PHP.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
<?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 while очень похож на цикл while, с той лишь разницей, что условие while проверяется в конце первой итерации. Таким образом, мы можем гарантировать, что код цикла будет выполнен хотя бы один раз, независимо от результата выражения while.

Давайте посмотрим на синтаксис цикла do-while while.

1
2
3
4
do
{
  // code to execute
} while (expression);

Давайте рассмотрим реальный мир, чтобы понять возможные варианты использования, в которых вы можете использовать цикл do-while while.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php
$handle = fopen(«file.txt», «r»);
if ($handle)
{
    do
    {
        $line = fgets($handle);
 
        // process the line content
 
    } while($line !== false);
}
fclose($handle);
?>

В приведенном выше примере мы пытаемся прочитать файл построчно. Во-первых, мы открыли файл для чтения. В нашем случае мы не уверены, содержит ли файл какой-либо контент. Таким образом, нам нужно выполнить функцию fgets хотя бы один раз, чтобы проверить, содержит ли файл какой-либо контент. Таким образом, мы можем использовать цикл do-while while здесь. do-while оценивает условие после первой итерации цикла.

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

Давайте посмотрим на синтаксис цикла for .

1
2
3
4
for (expr1; expr2; expr3)
{
  // code to execute
}

Выражение expr1 используется для инициализации переменных и всегда выполняется. Выражение expr2 также выполняется в начале цикла, и если оно принимает значение true, выполняется код цикла. После выполнения кода цикла выполняется expr3 . Как правило, expr3 используется для изменения значения переменной, которая используется в выражении expr2 .

Давайте рассмотрим следующий пример, чтобы увидеть, как это работает.

1
2
3
4
5
6
<?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 на каждой итерации.

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

Давайте посмотрим на пару примеров.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<?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 или любого другого языка программирования.

Я надеюсь, что вам понравилась эта статья, и если у вас есть какие-либо вопросы, не стесняйтесь задавать их, используя канал ниже!