Разрабатываю сайты

БЛОГ ПРО WEB

Рассказываю о web-разработке
и помогаю создавать сайты

Условный оператор PHP (if, else, elseif)

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

Допустим мы определили переменную $age

<?php 
  $age = 18; // Возраст = 18
?>

Задача: Пропишем условие, где переменная $age равна 18:

<?php
  if ($age == 18) {
  	
  }
?>

Начинается оператор с ключевого слова if, условие прописывается следом за словом if, в круглых скобках ( УСЛОВИЕ ) и результат вывода должен находиться следом в фигурных скобках { РЕЗУЛЬТАТ }

Обрати внимание, что сравнение происходит через двойной знак РАВНО. Выведем результат с помощью оператора ECHO

<?php
  if ($age == 18) {
  	echo 'Мне 18 лет';
  }
?>

Сравнение может быть не только со знаком равно. Можно так же использовать

== — равно
< — меньше чем
> — больше чем
<= — меньше или равно чем
>= — больше или равно чем
!= — НЕ равно

Например, если задача: вывести сообщение если возраст больше чем 18

<?php
  if ($age > 18) {
  	echo 'Мне больше 18 лет';
  }
?>

Или, если задача: вывести сообщение если возраст больше ИЛИ РАВНО 18

<?php
  if ($age >= 18) {
  	echo 'Мне 18 лет';
  }
?>

Мы так же можем прописать сразу несколько условий для одного оператора IF, используя AND или OR
Например задача: Вывести сообщение если у возраст равен 18 и рост выше или равен 170

Понятно, нужно создать еще одну переменную $height (РОСТ)

<?php
  $age = 18;
  $height = 170;

  if ($age == 18 AND $height >= 170) {
  	echo 'Мне 18 лет и мой рост 170 см';
  }
?>

Соединения условий:

AND — это «И»
OR — это «ИЛИ»

Тоже самое можно писать так

&& — это «И»
|| — это «ИЛИ»

Можно условие сделать еще сложнее используя круглые скобки внутри условия

<?php
  if (($age == 18 && $height >= 170) || ($age > 18 && $height >= 170)) {
  	echo 'Мне 18 лет и мой рост 170 см';
  }
?>

У оператора IF есть дополнительные операторы ELSE и ELSEIF
Например, выводим сообщение о том что мне 18 лет и сообщение в отрицательном случае, с оператором ELSE

<?php
  if ($age == 18) {
  	echo 'Мне 18 лет';
  } else {
  	echo 'Мне НЕ 18 лет';
  }
?>

Или выводим все варианты с помощью ELSEIF вот так

<?php
  if ($age == 18) {
  	echo 'Мне 18 лет';
  } elseif ($age > 18) {
  	echo 'Мне больше 18 лет';
  } elseif ($age < 18) {
  	echo 'Мне меньше 18 лет';
  }
?>

И сюда можем добавить так же ELSE

<?php
  if ($age == 18) {
  	echo 'Мне 18 лет';
  } elseif ($age > 18) {
  	echo 'Мне больше 18 лет';
  } elseif ($age < 18) {
  	echo 'Мне меньше 18 лет';
  } else {
    echo 'Фиг знает сколько мне лет ;)';
  }
?>

Проверка на существование переменной. Часто приходится проверять существует ли определенная переменная или нет. В этом нам поможет функция isset()

<?php
  if (isset($age)) {
  	echo 'Переменная существует';
  } else {
    echo 'Переменная НЕ существует';
  }
?>

И есть обратная функция, на проверку отсутствия переменной, empty()

<?php
  if (empty($age)) {
  	echo 'Переменная НЕ существует';
  } else {
    echo 'Переменная существует';
  }
?>

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

В последних версиях PHP, условия могут прописываться еще таким образом, без использования фигурных скобок

<?php
  if ($age == 18):
  	echo 'Мне 18 лет';
  else;
  	echo 'Мне НЕ 18 лет';
  endif;
?>

Переменные в условии могут содержать не только числа, но и текст, строковая переменная должна содержать значение в кавычках

<?php
  $name = 'Дмитрий';
?>

B условие будет прописано соответствующим образом (в кавычках)

<?php
  if ($name == 'Дмитрий')
?>

Если у нас значение переменной — булевое (true, false), то проверка на значение, может быть такая

<?php
  $bool = true;
  if ($bool) {
    // Значение переменной = true
  }

  $bool = false;
  if (!$bool) { // обрати внимание на знак ! перед переменной, который проверяет на отрицательное значение
    // Значение переменной = true
  }
?>

Оператор эквивалентности PHP

При использовании оператора if, есть некоторые тонкости, о которых, я думаю, нужно рассказать именно в этой статье. При сравнивании 2х значений, нужно учитывать и типы значений, потому что при сравнивании значений разных типов, может вывестись странный результат, к которому вы можете быть неготовы )

Например код

<?php
  $val1 = 0;
  $val2 = 'text';
  if ($val1 == $val2) {
  	echo "РАВНО";
  } else {
  	echo "НЕ РАВНО";
  }
?>

Результат будет РАВНО, хотя мы точно видим что 0 и ‘текст’ ну ни как не могут быть равны. PHP имеет свойство преобразовывать значения условий в число в том случае, если в условии есть хотя бы одно значение типа integer, в данном случае у нас $val1 является — integer. С точки pрения PHP условие у нас выглядит так

<?php
  $val1 = 0;
  $val2 = 'text';
  if ($val1 == (int)$val2) {
  	echo "РАВНО";
  } else {
  	echo "НЕ РАВНО";
  }
?>

А при преобразовании текста в число (int)$val2, мы получим 0 и так как у нас $val1 тоже равен 0, мы сравниваем 2 числа 0 и 0, вот у нас и результат РАВНО

Значит, если мы хотим сравнить именно эти 2 значения, нам необходимо привести оба значения к одному типу, и лучше преобразовать в строку

<?php
  $val1 = (string)0; // либо 0 просто поместить в кавычки '0'
  $val2 = 'text';
  if ($val1 == $val2) {
  	echo "РАВНО";
  } else {
  	echo "НЕ РАВНО";
  }
?>

Вот теперь PHP сравнит значения как текст ‘0’ и текст ‘text’ и результат будет НЕ РАВНО как и ожидалось. Или же есть другой способ — использовать Оператор эквивалентности PHP. Это значит что вместо сравнения в виде двойного равенства, мы можем использовать тройное равенство и проблема решится сама собой )

<?php
  $val1 = 0;
  $val2 = 'text';
  if ($val1 === $val2) {
  	echo "РАВНО";
  } else {
  	echo "НЕ РАВНО";
  }
?>

P.S.

Условный оператор IF является одним из самых важных операторов и одновременно является самым простым, но не смотря на его простоту, получилось много информации только об IF, и я уверен что, что-нибудь я упустил 😉


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *