Условия if, elseif, else в PHP
Конструкция if и её компоненты elseif и else составляют основополагающую часть языков программирования, к которым относится PHP. С её помощью можно сравнивать значения переменных и выполнять различные действия в зависимости от того или иного результата. Структура записи логических операций здесь идентична представленном в языке C формате, однако и при отсутствии опыта можно быстро разобраться в этом вопросе.
Как переводятся названия частей
Всё предельно просто:
- if – если. Всегда стоит перед остальными условиями. На одной строчке с ним в скобках должно находиться сравниваемое выражение, а также открывающаяся фигурная скобка, а перед закрывающей – действие, которое должно быть выполнено при полном соответствии;
- elseif – иначе, если. Указывать следует в случае, когда первое условие оказалось неправильным, но нужно добавить ещё одно сравнение. Также, можно записать компонент двумя словами: else if. Это приведёт к одинаковому результату. В одном условии может присутствовать в неограниченном количестве;
- else – иначе. Срабатывает, когда остальные условия оказались ложными (недействительными).
Обязательной частью является только if. При отсутствии остальных параметров сравнения ложные условия ни приведут ни к чему – например, изменение переменной не будет произведено.
В каких случаях применяется
Как указано выше, if является одной из главных частей PHP, благодаря чему спектр её применения обширен. Например, таким образом можно выводить на экран разную информацию в зависимости от полученных в API результатов, возвращаемых внешним скриптом значений и в прочих случаях, количество которых просто не счесть.
Из этого описания может показаться, что if, elseif и else– сложная конструкция, однако это совершенно не так. Убедиться в отсутствии каких-либо трудностей можно благодаря примерам, приведённым в данном тексте.
Альтернативный синтаксис
Если планируется работать с выводом данных, которые содержат кавычки, скобки и прочие компоненты, способные конфликтовать с backend-кодом, рекомендуется соблюдать синтаксис, отличающийся от привычного для PHP.
Несмотря на существование, пользоваться им необязательно – достаточно экранировать упомянутые выше знаки добавлением обратной косой черты (\) перед каждой из них, однако это действие займёт особо большое время при попытках вывести большой фрагмент кода.Совмещать несколько синтаксисов в одном блоке, располагающемся между <?и ?>, запрещено.
Логические операторы PHP
Для записи нескольких выражений в условие используются логические операторы, переводящиеся следующим образом:
- and (&&) – «и»;
- or (||) – «или»;
- ! – отрицание;
- xor – исключающее или.
В скобках к пунктам указаны их более приоритетные варианты,используемые в сложных конструкциях. То есть, вместо if($a== 4 and $b==1) можно указать if($a == 4 && $b== 1). Несмотря на нецелесообразность установки приоритетов в подобных ситуациях, данный код также приведёт к идентичному результату.
Последний пункт может вызвать некоторые затруднения, объясняемые отсутствием слова «xor» в английском языке. Этот оператор можно описать как «и, но не оба одновременно». Не стоит путать элементы списка с условными операторами – они являются предметом материала в целом.
Тернарный оператор
Использование этой особенности PHP спорно, поскольку помимо обеспечиваемой ею экономии времени на написании производится ухудшение читаемости кода. Но не стоит переживать – тернарный оператор эффективен для небольших сравнений и записей. Он представляет собой сокращённую форму if-elseif-else.
Подробнее оператор описан в разделе примеров.
Оператор нулевого коалесцирования
Крупное обновление языка, названное PHP7, принесло новый оператор, записываемый двумя знаками вопроса (??)и, аналогично предыдущему, призванный сократить код. Им предполагается работа с функцией isset(), которая определяет, не равна ли переменная null. Если её значение отличается от этой, будет возвращено true, иначе – false.
Примеры использования
Простое сравнение чисел
<?
$a = 123;
$b = 123;if($a == $b) {
echo»AэтоB»;
} else {
echo»А это не B»;
}
?>
Результатом выполнения станет вывод«A это B».
Сравнение чисел с elseif
<?
$a = 1;
$b = 2;
$c = 3;
if($a == $b) {
echo»A это B»;
} elseif($b < 3) {
echo»3 больше, чем B»;
} elseif($c == 1) {
echo»C это 1″;
} else {
echo»Что-то другое…»;
}
?>
В результате будет возвращено «3 больше, чем B». Пример не просто объясняет логику работы elseif, но также демонстрирует возможность использования этого оператора в количестве более одного.
Сравнение с альтернативным синтаксисом
<?
$a = 1;
$b = 2;
if($a == $b) {
echo»<b style=\»color: red\»>A это B</b>»;
} else {
echo»<b style=\»color: darkgreen\»>A этоне B</b>»;
}
Условие выше написано в обычном синтаксисе. Как видно, перед кавычками установлен обратный слэш (\), служащий для экранирования кавычек – в противном случае код просто не скомпилируется.
Несмотря на работоспособность данного способа, следующая форма записи более подходит для вывода HTML-тегов с указанными для них свойствами и особенно актуальна при параллельной работе с другими языками программирования – например, JavaScript.
<?
$a = 1;
$b = 2;
if($a == $b):?>
<b style=»color: red»>A это B</b>
<?else:?>
<b style=»color: darkgreen»>A это не B</b>
<?endif?>
Как видно, здесь присутствует ранее неупомянутый оператор endif. Он используется только в данном синтаксисе и служит для предоставления компилятору понимания, где завершается условие. Здесь теги выдаются без какого-либо экранирования и даже команды echo.
В обеих случаях на экране появится надпись «А это не B», написанная тёмно-зелёным цветом.
Двойное сравнение
<?
$a = 1;
$b = 1;
if($a == $band $b !== 1) {
echo»A и B равны друг другу и B не равен 1.»;
} else {
echo»A и B не равны друг другу, и/или B равен 1.»;
}
?>
Итог – вывод на экран надписи «A и B не равны друг другу, и/или B равен 1».
Сравнения с тернарным оператором
В следующем примере сравнивается, является ли значение переменной $a меньшим, чем у $b. По итогу определяется переменная $c:
<?
$c = ($a < $b) ? $a : $b;
?>
Сравнения с оператором нулевого коалесцирования
В следующем примере предполагается наличие какой-либо формы, где POST-запросом было передано значение поля name.
<?php
$name = $_POST[‘name’] ?? ‘unknown’;
?>
Здесь переменной $name становится значение поля name. Если же её длина равна нулю символов или null, в $name записывается unknown.
Итог
Это – все основные варианты применения конструкции if-elseif-else, которые могут использоваться как и в простых операциях, так и при обработке большого количества данных.