If...else
К операторам выбора относят: условный оператор (if...else) и переключатель (switch). Синтаксис условного оператора:
if(condition) statement 1 else statement 2
Условие condition может быть любым выражением. Если оно истинно, то выполняется оператор statement 1. В противном случае выполняется оператор statement 2. Допустима сокращенная форма записи условного оператора, в которой отсутствуют else и оператор statement 2.
В свою очередь, операторы statement 1 и statement 2 могут быть условными, что позволяет организовывать цепочки проверок любой глубины вложенности. И в этих цепочках каждый условный оператор может быть как полным, так и сокращенным. В связи с этим возможны ошибки неоднозначного сопоставления if и else.
Синтаксис языка предполагает, что при вложенных условных операторах каждое else соответствует ближайшему if. В качестве такого ошибочного примера можно привести следующую конструкцию [Подбельский В.В. Язык С++. М.:Финансы и статистика, 2001]:
<?
$x = 1;
$y = 1;
if($x == 1)
if($y == 1)echo("x=1 and y=1");
else echo("x!=1");
?>
При х равном 1 и у равном 1 совершенно справедливо печатается фраза «х = 1 and у = 1». Однако фраза «х != 1» может быть напечатана при х равном 1 и при у не равном 1, так как else соответствует ближайшему if.
Switch
Переключатель switch является наиболее удобным средством для организации мультиветвления. Синтаксис переключателя таков:
switch(expression) // переключающее выражение
{
case value1: // константное выражение 1
statements; // блок операторов
break;
case value2: // константное выражение 2
statements;
break;
default:
statements;
}
Операторы цикла
Операторы цикла задают многократное исполнение операторов в теле цикла. В PHP определены 4 разных оператора цикла:
цикл с предусловием:
while(condition)
{
statements;
}
цикл с постусловием:
do
{
statements;
} while(condition);
итерационный цикл:
for(expression1;expression2;expression3)
{
statements;
}
итерационный цикл foreach:
foreach (array as [$key =>] $value)
{
statements;
}
While
Оператор while называется оператором цикла с предусловием. При входе в цикл вычисляется выражение условие, и, если его значение отлично от нуля, выполняется тело цикла. Затем вычисления выражения условия и операторов тела цикла выполняется до тех пор, пока значение выражения условия не станет равным нулю. Оператором while удобно пользоваться для просмотра всевозможных последовательностей, если в конце них находится заранее известный символ.
Пример цикла while:
<?
$var = 5;
$i = 0;
while(++$i <= $var)
{
echo($i); echo('<br>');
}
?>
Do while
Этот оператор называется оператором цикла с постусловием. При входе в цикл в любом случае выполняется тело цикла, затем вычисляется условие, и если оно не равно 0, вновь выполняется тело цикла. В нижеследующем примере ноль всегда будет добавлен в список, независимо от условия (++$i <= $var):
<?
$var = 5;
$i = 0;
do
{
echo($i); echo('<br>');
}
while(++$i <= $var)
?>
For
for(expression1;expression2;expression3)
{
statements;
}
Здесь expression1 (инициализация цикла) – последовательность определений и выражений, разделяемая запятыми. Все выражения, входящие в инициализацию, вычисляются только один раз при входе в цикл. Как правило, здесь устанавливаются начальные значения счетчиков и параметров цикла. Смысл выражения-условия (expression2) такой же как и у циклов с пред- и постусловиями. При отсутствии выражения-условия предполагается, что его значение всегда истинно. Выражения expression3 вычисляются в конце каждой итерации после выполнения тела цикла.
В следующем скрипте выведем числа от 0 до 5:
<?
$var = 5;
$i = 0;
for ($i = 0; $i <= $var; $i++)
{
echo($i);
echo('<br>');
}
?>