Условные операторы if else, switch case
Давайте сделаем очередную шпаргалку по основам PHP кратко законспектируем условные операторы if else, switch case.
Содержание статьи
Условный оператор if else
if (если) — выполняет определенный код при выполнении какого-либо условия, else (иначе) — выполняет другой код.
<?php
if (условие) {код (выполниться, если условие верно)}
else {другой код (выполнится, если условие неверно)}
?>
Блок else не обязателен.
<?php $a = -3; /*Если $a больше или равна нулю, вывести 'верно' */ if ($a >= 0) {echo 'Верно!';} else {echo 'Неверно!';} //иначе вывести'Неверно!' ?>
Если в фигурный скобках if или else будет только одно выражение, можно эти фигурные скобки не писать:
<?php if ($a == 0) echo 'Верно!'; else echo 'Неверно!'; ?>
<?php if ($a == 0) echo 'Верно!'; else echo 'Неверно!'; ?>
Чтобы сравнить на равенство следует использовать оператор «==«, одиночное «=» зарезервировано за присваиванием.
<?php $a = 0; if ($a == 0) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!' ?>
Кроме оператора == существует еще и оператор ===. Их различие в том, что === сравнивает не только по значению, но и по типу.
<?php $a = '0'; //переменная $a является строкой, а не числом 0 if ($a == 0) echo 'Верно!'; else echo 'Неверно!'; /* Выведет 'Верно!', так как проверяется только значение, но не тип. Поэтому '0' равен 0. */ ?>
<?php $a = '0'; if ($a === 0) echo 'Верно!'; else echo 'Неверно!'; /* Выведет 'Неверно!', так как строка '0' не равна числу 0 при сравнении по типу. */ ?>
Для того, чтобы спросить ‘не равно’, существует операторы != и !==. Первый игнорирует различие в типах, а второй — нет.
<?php $a = 0; /* Если переменная $a НЕ равна нулю, то выведи 'верно', иначе (если не равна нулю) выведи 'неверно'*/ if ($a != 0) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Неверно!', так как $a равно 0 ?>
Операции сравнения
Возможные операции сравнения, которые можно использовать внутри if:
$a == $b $a равно $b
$a === $b $a равно $b и они одинаковы по типу
$a != $b $a не равно $b
$a !== $b $a не равно $b или $a равно $b, но ни разные по типу
$a < $b $a меньше $b
$a > $b $a больше $b
$a <= $b $a меньше или равно $b
$a >= $b $a больше или равно $b
Функция empty
Переменная будет пустая, если она равна нулю, » (пустой строке), false или null (то есть не определена ранее). Проверка на пустоту выполняется с помощью функции empty():
<?php $a = null; //или $a = 0, или $a = ' ', или $a = false if (empty($a)) echo 'Верно!'; //Если $a пустое, то... else echo 'Неверно!'; //выведет 'Верно!' ?>[/slh] [slh lang="php"]<?php $a = null; if (!empty($a)) echo 'Верно!'; //Если $a Непустое, то... else echo 'Неверно!'; //выведет 'Неверно!', так как $a пустое ?>
Функция isset
Аналогом empty является функция isset(). Она проверяет существует ли переменная (то есть то, что она не равна null).
<?php $a = 0; if (isset($a)) echo 'Верно!'; //Если $a существует, то... else echo 'Неверно!'; // Выведет 'Верно!', так как $a существует. ?>
<?php $a = 3; if (!isset($a)) echo 'Верно!'; //Если $a НЕ существует то... else echo 'Неверно!'; // Выведет 'Неверно!', так как $a существует. ?>
Несколько условий: or и and
Существуют операторы and (логическое И) и or (логическое ИЛИ).
<?php $a = 3; $b = -3; //Если $a больше нуля и $b одновременно меньше нуля то... if ($a > 0 and $b < 0) echo 'Верно!'; else echo 'Неверно!'; //выведет 'Верно!' $a = -3; $b = -3; if ($a > 0 or $b < 0) echo 'Верно!'; /* Если $a больше нуля ИЛИ $b меньше нуля - хотя бы один из них, то вывести 'Верно!', так как одно из условий выполнится */ else echo 'Неверно!'; ?>
Вместо and можно писать &&, а вместо or — ||.
Логические переменные
Многие функции PHP в результате своей работы возвращают либо true (истина), либо false (ложь).
<?php $a = true; if ($a == true) echo 'Верно!'; //Если $a равно true, то... else echo 'Неверно!'; // Выведет 'Верно!', так как $a равно true. ?>
Выражение $a == true можно записать более просто: вместо if ($a == true) написать if ($a).
<?php $a = true; if ($a) echo 'Верно!'; //Если $a равно true, то... else echo 'Неверно!'; //выведет 'Верно!' $a = true; if (!$a) echo 'Верно!'; //Если $a НЕ true (то есть false!), то... else echo 'Неверно!'; //выведет 'Неверно!' ?>
Вставка HTML кода
<?php $a = true; if ($a) { //если $a равно true echo '<p>Здесь выведем какой-то HTML!</p>'; } ?>
Можно прервать код PHP:
<?php $a = true; if ($a) { /* Мы оборвали PHP, но HTML код ниже все равно будет виден на экране только если $a равно true. */ ?> <p>Здесь выведем какой-то HTML!</p> <?php /* И далее продолжить код PHP, открыв скобку <?php и закрыть фигурную скобку от ифа. */ } ?>
Вложенные if
<?php if (empty($a)) { //если переменная $a пуста echo 'Введите $a'; } else { //если переменная $a НЕ пуста if ($a > 0) { //спрашиваем, больше ли нуля переменная $a echo 'Больше нуля!'; } else { echo 'Меньше нуля!'; } } ?>
Условный оператор elseif
Чтобы уменьшить количество фигурных скобок, можно применять условный оператор elseif , которая одновременно и else, и начало вложенного if:
Решение предыдущей задачи через конструкцию elseif
<?php if (empty($a)) { echo 'Введите $a!'; } elseif ($a > 0) { //одновременно выполняется else для empty($a) и спрашивается больше ли $a нуля echo 'Больше нуля!'; } else { echo 'Меньше нуля!'; } ?>
Несколько if
Есть такая задача: на сайте необходимы 3 языка — русский, английский, немецкий. Переменная $lang должна принимать 3 значения — ‘ru’, ‘en’ и ‘de’. В зависимости от значения $lang вывести фразу на одном из языков.
Можно воспользоваться вложенными if или elseif.
Решение задачи через elseif – не самое удачное
<?php if ($a == 'ru') {echo 'Русский текст'; } elseif ($a == 'en') {echo 'Английский текст'; } elseif ($a == 'de') {echo 'Немецкий текст'; } ?>
Решение не очень красивое! Проще будет написать не if с несколькими else, а несколько if вообще без else:
Решение задачи через несколько if
<?php if ($a == 'ru') { echo 'Русский текст'; } if ($a == 'en') {echo 'Английский текст'; } if ($a == 'de') {echo 'Немецкий текст'; } ?>
Это решение тоже не слишком удобно, лучше воспользоваться оператором switch-case.
Условный оператор switch-case
Конструкция switch case представляет собой альтернативу if else, ее рекомендуется использовать в случае множественного выбора (например, 10 различных языков, как в нашей задаче).
<?php
switch ($переменная) {
case ‘значение1‘:
код, выполняемый когда переменная принимает значение1;
break;
case ‘значение2‘:
код, выполняемый при значение2;
break;
case ‘значение3‘:
код, выполняемый при значение3;
break;
default:
код выполняемый если переменная не совпала ни с одним значением;
break;
}
?>
Решим задачу с тремя языками с помощью switch case:
<?php switch ($lang) { case 'ru': echo 'Русский текст'; break; case 'en': echo 'Английский текст'; break; case 'de': echo 'Немецкий текст'; break; default: echo 'Данный язык не поддерживается'; break; } ?>
На этом про условный оператор if else и оператор switch case все. Не забудьте повторить прошлую тему «Строковые функции».
Установил на сайт для подсветки кода — Lite Syntax Highlighting, удобная штука и код стал более читабельным.
03.11.19 Указанный выше плагин Lite Syntax Highlighting пришлось снова убрать, не работает после смены темы на сайте да и скорость загрузки тормозит.
Успехов в учебе!
Всего комментариев: 0