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

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

Возможность задавать условия выполнения конкретному фрагменту кода – одна из фундаментальных задач при разработке программного обеспечения.

Оператор if

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

if (выражение) блок_выполнения

Здесь выражение есть любое правильное PHP-выражение (т.е. все, что имеет значение). В процессе обработки скрипта выражение преобразуется к логическому типу. Если в результате преобразования значение выражения истинно ( True ), то выполняется блок_выполнения. В противном случае блок_выполнения игнорируется.

Если вы уже знакомы с любым другим языком программирования, то начать использовать конструкцию if и PHP логические операторы не составит большого труда. Если нет, в этой статье даны простые примеры для ознакомления:

<?php

$number = 42;

if($number == 42)

echo «Наше число – 42!»;

?>;

Мы объявили новую переменную number и присвоили ей значение 42. Следующая инструкция выполняет проверку, совпадает ли значение переменной с числом 42. PHP выполнит следующую инструкцию только в том случае, если выражение примет значение TRUE. Если вы измените значение переменной строкой выше, то инструкция не будет выполнена.

Мы используем два знака равенства подряд. Почему? Во многих языках программирования, в том числе и в PHP, одинарный знак равенства является операцией присваивания переменной какого-либо значения. Два знака равенства – в PHP оператор сравнения, используется для сравнения двух значений. Более подробно об этом читайте тут. В этом примере мы используем оператор для сравнения двух элементов: переменной $number и числа 42. Если бы мы использовали один знак равенства, значение 42 было бы присвоено переменной number, и никакого сравнения не произошло бы.

В PHP можно сравнивать не только значения, но и проверять тип данных. Для этого используется специальный оператор – три знака равенства подряд. Приведем пример:

<?php

$number = 42;

if($number === «42»); 

echo «Наше число – 42!»;

?>;

В данном случае мы сравнили переменную $number со строкой, содержащей запись «42», а не с числом 42. При использовании PHP оператора знака тройного равенства мы сравниваем не только значение, но и типы данных. Получается, что значения не одинаковы: одно из них является целым числом, а второе строкой.

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

Конструкция if может быть вложенной:

<?php 
$number = 10; 
if($number > 0)
if($number < 20) echo «Число больше нуля, но меньше двадцати!»;
?>

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

<?php 
$number = 10; 
if(($number > 0) and ($number < 20)) 
echo » Число больше нуля, но меньше двадцати!»; 
?>

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

Правила преобразования выражения к логическому типу:

В FALSE преобразуются следующие значения:

  • логическое False
  • целый ноль ( 0)
  • действительный ноль ( 0)
  • пустая строка и строка «0»
  • массив без элементов
  • объект без переменных (подробно об объектах будет рассказано в одной из следующих лекций)
  • специальный тип NULL

Все остальные значения преобразуются в TRUE.

Вот еще один пример:

<?php

$names = array(«Иван»,»Петр»,»Семен»);

if ($names[0]==»Иван») 

{

echo «Привет, Ваня!»;

$num = 1;

$account = 2000;

}

if ($num) echo «Иван первый в списке!»;

$bax = 30;

if ($account &amp;gt; 100*$bax+3)

echo «Эта строчка не появится на экране, так как условие не выполнено»;

?>

Конструкция else

Мы рассмотрели только одну, основную часть оператора if . Существует несколько расширений этого оператора. Оператор elseрасширяет if на случай, если проверяемое в if выражение является неверным, и позволяет выполнить какие-либо действия при таких условиях.

Структуру оператора if , расширенного с помощью оператора else , можно представить следующим образом:

if (выражение) блок_выполнения

else блок_выполнения

Эту конструкцию if…else можно интерпретировать примерно так: если выполнено условие (т.е. выражение=true ), то выполняем действия из блока_выполнения, иначе – действия из блока_выполнения1. Использовать оператор else не обязательно.

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

<?php

$animal = "Кошка";

if($animal == "Собака")

echo "Это собака!";

else

echo "Я уверен, что это все-таки животное, но уж точно не собака!"

?>

Как только условие TRUE не удовлетворяет конструкции if, выполняется конструкция else. В приведенном выше примере видно, что до тех пор, пока выполняется условие if, код else не задействован. В этом примере мы хотим получить единственно верное значение – «Собака», и выводим сообщение о том, получили мы его, или нет. Попробуйте изменить значение переменной $animal, вместо «Кошка» написать «Собака», и вы увидите результат.

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

<?php

$animal = "Кошка";

if($animal == "Собака")

echo "It's a dog!";

else

{

echo "Я уверен, что это все-таки животное, но уж точно не собака!";

echo "Эта строка тоже является частью конструкции else.";

}

?>

Оператор elseif

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

Структуру оператора if , расширенного с помощью операторов else и elseif , можно представить следующим образом:

if (выражение) блок_выполнения

elseif(выражение1) блок_выполнения1

...

else блок_выполненияN

Операторов elseif может быть сразу несколько в одном if-блоке. Elseif-утверждение будет выполнено, только если предшествующее if-условие является False, все предшествующие elseif-условия являются False, а данное elseif-условие – True.

<?php

$number = 15;

if ($number < 10)

{

echo "Число меньше 10.";

}

elseif ($number == 10)

{

echo "Число равно 10.";

}

else

{

echo "Число больше 10.";

}

?>

В этом примере числовое значение переменной $number сравнивается с 10. Сперва оператор if проверяет, что $number меньше 10. Если этот оператор выполняется ( true ), выводится сообщение «Число меньше 10». Затем оператор elseif используется для проверки, что $number равно 10. Если этот оператор оценивается как true, выводится сообщение «Число равно 10». Оператор elseif выполняется, ТОЛЬКО если оператор if возвращает FALSE. Наконец, если операторы if и elseif возвращают FALSE, выполняется оператор else и выводится сообщение «Число больше 10». В то время как оператор elseif позволяет проверить только одно условие, структуру if можно применять для проверки множества условий.

Следующий пример использует функцию checkdate(), функцию explode() и оператор if … else для проверки правильности строки даты.

<?php

$orig_date = "09/19/2005";

$date = explode("/", "$orig_date");

$month = $date[0];

$day = $date[1];

$year = $date[2];

$result = checkdate($month, $day, $year);

if ($result == true)

{

echo "Правильная дата";

}

else

{

echo "Неправильная дата!";

}

?>

Операторы if можно использовать «в одиночку» либо как часть оператора if…else или if…elseif…else. В любом случае вы обнаружите, что эта структура будет важным элементом в любой программе.