Условия if, else и switch в PHP

В этой статье будет разобран механизм условий if. В программировании условие if - это одни из основных инструментов. Давайте посмотрим, как это работает:
<?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.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, покупка SSL сертификатов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: