Условный оператор 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, и я уверен что, что-нибудь я упустил 😉
Добавить комментарий