Скачиваний:
33
Добавлен:
04.04.2013
Размер:
728.06 Кб
Скачать

Условные операторы

Условные операторы позволяют определять блоки кода, которые выполня­ются только при осуществлении некоторых условий. В РНР есть две услов­ные конструкции. Первая из них - это if ... elseif ... else, позволя­ющая проверить несколько выражений и выполнить операторы в соот­ветствии со значениями этих выражений. Если нужно сравнить одно выра­жение с рядом значений, то РНР предоставляет конструкцию switch ... case, упрощающую эту операцию.

Оператор if является одним из важнейших операторов, позволяющих выполнять выбранные строки кода только при истинности некоторых заданных условий. Например:

//Canada будет выводиться, только если $country

//имеет значение са

if ($country == "са") echo "Canada";

Если при выполнении условия нужно выполнить несколько команд, то для обозначения строк, принадлежащих блоку if, используются фигурные скобки {}:

if ($country == "са") {

echo "Canada ";

echo "Mr. Ivanov";

}

Условия можно объединять с помощью логических операторов "и" (&&), "или" ( || ) :

if (($a < $b) && ($b > $c)) echo "Условия выполнены";

Если проверяемое условие имеет значение false, то оператор if позволяет указать блок инструкций, которые должны выполнены в случае ложности проверяемого условия. Этот блок инструкций должен располагаться после ключевого слова else. В случае, если блок состоит из нескольких инструкций, содержимое блока должно быть заключено в фигурные скобки {} (в случае, если блок состоит из одной инструкции, применение фигурных скобок не обязательно)

if ($h < 0) {

echo "Отрицательное число";

}

else {

echo "Положительное число";

}

В РНР есть ключевое слово elseif для проверки альтернативных условий, если условие if оказывается не выполненным. В операторе if мож­но использовать любое количество операторов elseif. Последняя ветвь else позволяет указать код, который нужно выполнить, если ни одно из условий if или elseif не оказалось истинным:

if ($h < 0) {

echo "Отрицательное число";

}

elseif ($h==0) {

echo "Ноль";

}

else {

echo "Положительное число";

}

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

Предположим, что у нас есть переменная, которая в результате работы программы принимает заранее определенные значения из некоторого, заранее определенного, диапазона. В качестве примера можно взять имена национальных доменных зон (Россия - "ru", Украина "ua", Германия "de" и т.д.). Допустим, что пользователь вводит название доменной зоны, а программа возвращает название страны, за которой закреплена данная зона. Можно воспользоваться описанными выше операторами if... elseif... else:

if ($country == "ca") {

echo "Канада";

}

elseif ($country == "ru") {

echo "Россия";

}

elseif ($country == "de") {

echo "Германия";

}

elseif ($country == "ua") {

echo "Украина";

}

else {

echo "Информация отсутствует";

}

В этом примере мы неоднократно проверяем значение $country, несмотря на то что оно не меняется от одной строки к другой. С помощью оператора switch можно значительно упростить процедуру многократной проверки.

switch ($country) {

case "ca":

echo "Канада";

break;

case "ru":

echo "Россия";

break;

case "de":

echo "Германия";

break;

case "ua":

echo "Украина";

break;

default:

echo "Информация отсутствует";

}

Оператор switch вычисляет значение $country и сравнивает его со всеми зна­чениями в предложениях case. При обнаружении совпадения выполняются операторы, относящиеся к соответствующему блоку case, пока не будет обнаружен оператор. Если соответствие не обнаружено, выполняются операторы блока default. Нали­чие блока default не является обязательным.

Циклы

Цикл является средством, позволяющим выполнять некоторый блок кода заданное число раз или до тех пор, пока не будет выполнено некоторое условие. В РНР есть два типа циклов: while и for. Циклы while проверяют условие до или после каждого прохода цикла и повторяют цикл снова только в том случае, если условие истинно. Число итераций цикла for уста­навливается перед первым проходом и не может быть изменено.

Начнем рассмотрение циклов используемых в PHP с цикла while. Его синтаксис по­хож на синтаксис оператора if:

while (условие) { блок операторов }

Цикл while вычисляет значение булева выражения. Если выражение равно false, то код внутри фигурных скобок пропускается. Если оно равно true, код в скобках выполняется. По достижении закрывающей скобки проверя­емое выражение вычисляется заново, и если его значение true, код в цикле выполняется повторно. Это продолжается до тех пор, пока выполняется ус­ловие. Обратите внимание, что условие проверяется только в начале каждой итерации, поэтому если истинность выражения изменится посредине вы­полнения блока кода, код будет выполнен до конца. Чтобы прервать выпол­нение в более ранний момент, можно воспользоваться оператором break.

$i = 1;

while ($i<11) {

echo $i." ";

$i++;

}

В данном примере блок кода будет выполнен десять раз. На одиннадцатом проходе условие цикла перестанет быть истинным и работа цикла закончится. В результате работы программы будет выведена через пробел последовательность чисел от 1 до 10.

Цикл do ... while аналогичен циклу while, но проверка условия происходит не в начале, а в конце каждой итерации. Это означает, что цикл всегда выполняется хотя бы один раз.

$i = 1;

do {

echo $i." ";

$i++;

} while ($i<11);

Данный пример во многом аналогичен предыдущему. Единственное отличие заключается в том, что проверка условия выполнения цикла выполняется не перед проходом, а после.

Синтаксис цикла for несколько сложнее, но использовать цикл for в некоторых случаях бо­лее удобно, чем цикл while:

for ($i=1;$i<11;$i++) {

echo $i." ";

}

Оператор for содержит в своих скобках три выражения, разделяемые точ­кой с запятой. Первое выражение является оператором присваивания для переменной, являющейся счетчиком итераций (счетчиком цикла). Этот оператор выполняется только один раз перед первым проходом цикла. Второе выражение является булевым и вычисляется в начале каждой итерации. Если значение этого выражения true, происходит итерация. Если значение false, выполнение цикла за­вершается. Третьим является оператор, выполняемый в конце каждой ите­рации цикла. Обычно он используется для увеличения или уменьшения счетчика итераций. Результатом работы приведенной выше программы, как и в предыдущих примерах, будет последовательность чисел от 1 до 10, выведенных через пробел.