В этой статье мы более подробно рассмотрим использование в 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 &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. В любом случае вы обнаружите, что эта структура будет важным элементом в любой программе.