PHP скрипты

MySQL

Apache

phpMyADmin

6.2: Условный оператор IF

Главная Страница » Книги по PHP » Самоучитель PHP 5 для чайников с примерами » Условный оператор IF

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

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

Оператор if

Действительно, этот оператор можно встретить во многих языках программирования. В этом плане РНР не стал исключением и предлагает очень простой и понятный синтаксис:

if (выражение) действие; // выполняется, если выражение равно TRUE

Вся конструкция начинается со слова if. Далее в круглых скобках записывается выражение типа Boolean. Если оно равно TRUE, то выполняется действие, которое следует сразу за закрывающей круглой скобкой, иначе действие игнорируется. Например, если вам больше шестнадцати лет, то вы можете получить паспорт (листинг 6.1).

Листинг 6.1. Условный оператор if.

‹html›
‹head›
‹title›Условный оператор if‹/title›
‹/head›
‹body›
‹?php
if ( $age > 16 ) echo "А у вас есть паспорт?";
?›
‹/body›
‹/html›

Итак, при значении переменной $age (например, 18) больше 16 выражение в круглых скобках будет равно TRUE, а значит выполнится вывод сообщения. В противном случае окно браузера будет пустым.

Стоит сказать несколько слов о выражении в круглых скобках. На самом деле изначально оно может иметь не только булевское значение. Например, на практике можно встретить такие варианты, как, например, в листинге 6.2.

Листинг 6.2. Преобразование выражения в круглых скобках.

‹html›
‹head›
‹title›Преобразование выражения в круглых скобках‹/title›
‹/head›
‹body›
‹?php
if ( 1 ) echo "Выводится";
if ( "1" ) echo "Выводится";
if ( "О" ) echo "He выводится";
if ( 0 ) echo "He выводится";
?›
‹/body›
‹/html›

Здесь мы видим строковые и числовые выражения, также могут быть массивы, объекты и непосредственно встроенные константы TRUE и FALSE. В данном случае все эти значения преобразуются к типу Boolean по правилам, рассмотренным в главе 4. Помните, что в итоге мы имеем дело только со значениями TRUE и FALSE. Также стоит отметить, что употребление выражений по типу отличных от Boolean, за исключением 0 и 1, не рекомендуется, так как при этом отсутствует наглядность.

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

if (выражение) действие; // выполняется, если выражение равно TRUE
else действие; // выполняется, если выражение равно FALSE

Если выражение имеет значение FALSE, то выполняется действие, которое следует за словом else. Приведем листинг 6.3 - простой пример сравнения двух чисел.

Листинг 6.3. Сравнение двух чисел.

‹html›
‹head›
‹title›Сравнение двух чисел‹/title›
‹/head›
‹body›
‹?php
$a = 1;
$b = 0;
if ($a > $b) echo "а больше b";
else echo "а меньше, либо равно b";
?›
‹/body›
‹/html›

Допустим, что $a меньше $b (к примеру, 0<1), тогда значение выражения будет равно FALSE, и выполнится действие, соответствующее else.

До этого времени у вас могло сложиться мнение, что при использовании оператора if выполняется всего одна команда. В этой книге применяется термин действие, которое подразумевает одну или множество команд. Например, можно вывести еще одно сообщение (листинг 6.4).

Листинг 6.4. Выполнение нескольких команд.

‹html›
‹head›
‹title›Выполнение нескольких команд‹/title›
‹/head›
‹body›
‹?php
$a = 1;
$b = 0;
if ($a > $b)
{
echo "а больше b";
echo "Это тоже будет выведено";
}
else echo "а меньше, либо равно b";
?›
‹/body›
‹/html›

Чтобы выполнить несколько команд, применяются фигурные скобки ({}). В нашем примере переменная $а больше $b, поэтому значение выражения ($а > $b) будет равно TRUE. В связи с этим выполнится соответствующий блок вывода двух сообщений. Если вы попытаетесь опустить фигурные скобки, то это либо вызовет ошибку, как в нашем примере, либо результат выполнения оператора if будет не тем, которого вы ожидаете (листинг 6.5).

Листинг 6.5. Особенности работы оператора if.

‹html›
‹head›
‹title›Особенности работы оператора if‹/title›
‹/head›
‹body›
‹?php
$a = 1;
$b = 0;
if ($a > $b)
echo "а больше b";
else
echo "а меньше, либо равно b";
echo "Это будет выведено";
?›
‹/body›
‹/html›

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

Если вы всетаки иногда пренебрегаете фигурными скобками, то вам необходимо знать еще одну особенность работы оператора if. Запомните, что ключевое слово else всегда относится к ближайшему if (листинг 6.6).

Листинг 6.6. Особенности работы оператора if.

‹html›
‹head›
‹title›Особенности работы оператора if‹/title›
‹/head›
‹body›
‹?php
$а = 2;
$b = 0;
if ($а > $b)
if (($а - $b) == 1) echo "разность между а и b равна 1";
else echo "а меньше, либо равно b";
?›
‹/body›
‹/html›

В этом случае выведется а меньше либо равно b, так как else относится не к первому if, а ко второму. Для правильной работы этой программы нужно использовать фигурные скобки (листинг 6.7).

Листинг 6.7. Особенности работы оператора if.

‹html›
‹head›
‹title›Особенности работы оператора if‹/title›
‹/head›
‹body›
‹?php
$a = 2;
$b = 0;
if ($a > $b)
{
if (($a - $b) == 1) echo "разность между а и b равна 1";
}
else echo "а меньше, либо равно b";
?›
‹/body›
‹/html›

Помните, что фигурные скобки помогают избежать путаницы при использовании оператора if. Также они делают код программы более понятным.

Поделиться с друзьями