<?php
if( /* условие */ ){
/* код в этих скобках будет выполняться,
если "условие" является правдой */
}else{
/* код в этих скобках будет выполняться,
если "условие" является ложью */
}
?>
Обратите внимание, что можно записать if( ... ){ ... } без блока else{ ... }. Также можно записать оба блока без фигурных скобок, но тогда выполнится только следующая строчка после if или else. Приведём пример и попробуем написать код с возможными условиями:
<?php
$a = 4;
if( $a < 5 ) echo 'Это правда'; // значение $a меньше 5
if( $a <= 5 ) echo 'Это правда'; // значение $a меньше или равно 5
if( $a > 3 ) echo 'Это правда'; // значение $a больше 3
if( $a >= 3 ) echo 'Это правда'; // значение $a больше или равно 3
if( $a == 4 ) echo 'Это правда'; // значение $a равно 4
if( $a == 2 * 2 ) echo 'Это правда';// значение $a равно 4 (потому что 2*2=4)
if( $a != 7 ) echo 'Это правда';// значение $a НЕ равно 7
?>
Во всех перечисленных примерах будет выведена строка "Это правда", потому что условие выполняется.
Не забывайте, что одиночное равно "=" делает операцию присваивания. А двойное "==" сравнивает значения. Условие с одним равно if($a = 1) всегда будет исполняться.
Помимо сравнения по значению есть ещё и сравнение по типу. К примеру:
<?php
$a = true; // тип данных boolean (имеет два значения true и false)
if( $a === true ) echo 'Это правда'; // значение $a имеет тип и равно true
if( $a !== false ) echo 'Это правда'; // значение $a не имеет тип или не равно false
?>
Условие может быть как в одну строку, так и в несколько. Ещё условие может содержать конец и начало PHP кода. Приведём пример:
<?php
$a = 1;
if( $a == 1 ){
?>
<div>Условие выполнено</div>
<?php
}else{
?>
<div>Условие не выполнено</div>
<?php
}
?>
Если запустить такой код, то на экране появится HTML страница с блоком "<div>Условие выполнено</div>". Подобную запись, когда в условие if вставляют разрыв PHP кода, можно встретить довольно часто в больших проектах.
Помимо if и else есть ещё elseif. Последнее используется для создания множественных условий. Приведём наглядный пример:
<?php
$a = 2;
if( $a == 1 ){
echo $a . ' == 1';
}elseif($a < 3){
echo $a . ' < 3';
}elseif($a <= 2){
echo $a . ' <= 2';
}else{
echo 'Ничего не подходит';
}
?>
В таком коде условия будут проверять по порядку. Сначала проверится $a == 1 и оно окажется ложью. Будет проверено следующее условие по списку $a < 3 - это условие является истиной, поэтому в результате выполнения этого PHP кода на экран браузера будет выведен текст "2 < 3". Но если бы и это условие не подошло, то было бы проверено следующее $a <= 2. Но если и оно бы не подошло, то была бы выполнено то, что стоит в else{ ... } - на экран бы было выведен текст "Ничего не подходит".
Возможно сделать несколько проверок внутри скобок if( ... ). Для этого используются логические операторы and (и) / or (или). Также возможно ставить скобки внутри условий. Эти скобки работают как скобки в математике. Разберём всё на примере:
<?php
$a = 2;
$b = 3;
$c = 4;
if( $a == 2 and $b < $c ){
// код здесь будет выполняться, потому что условие - истина
}
if( $a == 2 and ($b < $c and $c < $a ) ){
// код здесь НЕ будет выполняться, потому что условие - ложь ($c больше $a)
}
if( $a == 2 or ($b < $c and $c < $a ) ){
// код здесь будет выполняться, потому что условие - истина. Несмотря на то, что часть выражения после "or" является ложью
}
?>
Конструкция switch
Если необходимо выполнить разный код при определённых значениях аргумента, то для большого количества проверок подойдёт switch( ... ). Продемонстрируем работу этой функции наглядно:<?php
$a = 2;
switch ($a) {
case 1:
echo 'Переменная $a равна одному';
break;
case 2:
echo 'Переменная $a равна двум';
break;
case 'три':
echo 'Переменная $a равна трём';
break;
default:
echo 'Значение не найдено';
break;
}
?>
В результате выполнения этого кода на экране браузера появится надпись "Переменная $a равна двум". Это происходит потому, что функция switch берёт значение переменной $a и начинает сравнивать со значениями, которые стоят после слова "case". Эти значения могут быть как строки, так и числа. В примере $a = 2, поэтому функция выполнила код, стоящий в пункте "case 2:".
Конструкции switch в реальных проектах сайтов встречаются довольно редко. Обычно хватает if-else, или на крайний случай несколько раз вложенных if-else.