- •1. Условный оператор
- •2. Циклы
- •2.1. Цикл с предусловием While
- •2.2. Цикл с постусловием do while
- •2.3. Цикл со счетчиком For
- •2.4. Альтернативный синтаксис
- •2.5. Вложенные циклы
- •2.6. Операторы break и continue
- •2.7. Цикл перебора массивов foreach
- •3. Инструкция switch-case (конструкция выбора)
- •4. Варианты заданий
if (логическое выражение 1)
оператор_1; eiseif ( логическое выражение 2 ) оператор_2; else
оператор_3;
Для полноты описания данной конструкции нужно сказать, что вы можете использовать еще один — третий альтернативный вариант (на этот раз уже точно последний) конструкции:
if (логическое выражение 1):
оператор_1; eiseif ( логическое выражение 2 ) : оператор_2; else:
оператор_3; endif
Если пропустить точки с запятой, то вы получите сообщение об ошибке.
2. Циклы
На втором месте по частоте использования, после условного оператора, находятся циклы. Цикл позволяет повторить определенное (и даже не определенное — когда работа цикла зависит от условия) количество раз какие-нибудь операторы. Данные операторы называются телом цикла — они будут «крутиться» в цикле. Проход цикла называется итерацией. Как и С, PHP поддерживает три вида циклов:
*Цикл с предусловием (while).
*Цикл с постусловием (do-while).
*Цикл со счетчиком (for).
2.1. Цикл с предусловием While
Принцип работы цикла с предусловием:
*Вычисляется значение логического выражения.
*Если значение истинно, выполняется тело цикла, в противном случае — переходим на следующий за циклом оператор.
Синтаксис цикла с предусловием выглядит следующим образом:
while ( логическое выражение ) инструкция;
В данном случае телом цикла является «инструкция». Обычно тело цикла состоит из большего числа операторов. Простейший пример цикла:
<? $1 = 0;
while($i++ < 10) echo $i; ?>
Данная программа выведет строку 12345678910. Обратите внимание на последовательность выполнения операций условия $i++ < Ю. Сначала проверяется условие, а только потом увеличивается значение переменной. Если же мы поставим операцию инкремента перед переменной (++$i<10), то сначала будет выполнено увеличение переменной, а только потом — сравнение. В результате мы получили бы строку 123456789.
Этот же цикл можно было бы записать по-другому:
$1 = 0; while ($i<10)
{
$i ++;// увеличение счетчика echo $i;
}
Если мы увеличим счетчик после выполнения оператора echo, мы получим строку 0123456789. Но в любом случае, у нас будет 10 итераций. Итерация — это проход цикла, то есть выполнение инструкций тела цикла.
2.2. Цикл с постусловием do while
Цикл с постусловием отличается от цикла с предусловием тем, что сначала выполняется тело цикла, а только потом уж проверяется условие. Таким образом, тело цикла хотя бы один раз, но будет обязательно выполнено.
Синтаксис цикла do while такой:
do
{
// тело цикла
}
while (условие);
Попробуем с помощью цикла с постусловием получить строку 12345678910. Поскольку в этом цикле сначала выполняется тело, а потом проверяется условие, то нам нужно установить начальное значение счетчика в единицу:
<? $1 = 1;
do echo $i; while ($i + + <10); ?>
Напомню, что мы можем увеличивать значение счетчика в теле цикла (так даже понятнее).
2.3. Цикл со счетчиком For
Цикл со счетчиком используется для выполнения тела цикла определенное количество раз.
Например, в цикле while удобно ждать определенного события, например, когда возвращаемое какой-то функцией значение будет истинно (а такая ситуация может и не произойти). Цикл for удобно использовать, например, для заполнения массива. Синтаксис цикла for:
for (команды_инициализации; условие; команды_после_итерации) { тело цикла }
Оператор for начинает свою работу с выполнения команд инициализации. Данные команды выполняются всего лишь один раз. После этого проверяется условие: если оно истинно, выполняется тело цикла. После того, как будет выполнен последний оператор тела, выполняются команды «после итерации». Затем снова проверяется условие, в случае, если оно , истинно, выполняется тело цикла и поститерационные команды, и т.д.
Выведем привычную нам строку:
<?
for ($i=Q; $i<10; $,! + + ) echo $1; ? >
Данный сценарий выведет строку 0123456789. Нам же нужна строка 12345678910, поэтому нужно обеспечить увеличение счетчика при проверке логического выражения:
<?
for ($1=0; $1++<10;) echo $1; ? >
В этом случае нам не нужны команды, выполняющиеся после итерации. Если вам нужно указать несколько команд, вы можете разделять их запятыми:
for ($1=0, $j=0; $<10; $i++, $j++) echo $1;
Как вы уже успели заметить, цикл со счетчиком является вариацией цикла ; с предусловием, так как сначала в нем проверяется условие, а только по- , том выполняется тело.
2.4. Альтернативный синтаксис
Циклы while и for имеют альтернативный синтаксис. Для цикла while он таков:
while (логическое_выражение): тело цикла
endwhile;
А для цикла for — такой:
for (команды_инициализации; условие; команды_после_итерации) : тело цикла
endfor;
Обратите внимание на двоеточие — его наличие обязательно! Альтернативный синтаксис также предусмотрен для оператора if-else:
if (логическое_выражение) : команды; elseif(логическое_выражение2): команды;
else:
команды; endif;
Использовать альтернативный синтаксис имеет смысл, если вы предпочитаете включать в РНР-сценарии HTML-код, а не выводить его с помощью echo. В этом случае альтернативный синтаксис облегчает использование операторов if-else, while и for:
<?if ($REMOTE_ADDR):?> <hl>Welcome home!</hl> <?else:?> <hl>Hello</hl> <?endif; ?>
2.5. Вложенные циклы
Каждый цикл может содержать в своем теле несколько циклов. Каждый из этих циклов называется вложенным циклом. Вкладываться может неограниченное число циклов, причем все они могут быть разного типа — while, do или for. Рассмотрим следующий код:
for ($1 = 0; $К10; $1 + + ) { echo "$I\n";
for ($J=0; $J<5; 5J++) echo "$J "; echo "\n";
}
Вложенный цикл выводит строку 01234. Данная строка будет выведена 10 раз — это число итераций внешнего цикла for.
2.6. Операторы break и continue
При использовании циклом можно использовать операторы break и continue. Первый прерывает работу всего цикла, а второй — только текущей итерации. Рассмотрим следующие примеры:
<? $1 = 0;
while ($i + + < 10)
{
if ($i==3) break; echo "Итерация $i\n";
)
?>
В этом примере после второй итерации работа цикла будет прервана и программа выведет строки: