Конструкция if - PHP
В этом уроке вы узнаете о конструкции if в PHP и о том, как использовать её для выполнения блока кода при условии.
Введение
Конструкция if позволяет выполнить инструкцию, если выражение оценивается как true. Ниже представлен синтаксис конструкции if:
<?php
if ( условие )
инструкция;В данном синтаксисе PHP сначала вычисляет выражение. Если выражение оценивается как true, PHP выполняет инструкцию. В случае, если выражение оценивается как false, PHP игнорирует инструкцию.
Следующая блок-схема иллюстрирует, как работает оператор if:

В следующем примере конструкция if используется для отображения сообщения, если переменная $is_admin имеет значение true:
<?php
$is_admin = true;
if ($is_admin)
echo 'Добро пожаловать, admin!';Поскольку $is_admin имеет значение true, скрипт выводит следующее сообщение:
Добро пожаловать, admin!Фигурные скобки
Если вы хотите выполнить несколько инструкций в блоке if, вы можете использовать фигурные скобки для группировки нескольких инструкций следующим образом:
<?php
if ( условие ) {
инструкция1;
инструкция2;
// еще инструкции
}В следующем примере используется конструкция if, которая выполняет несколько инструкций:
<?php
$can_edit = false;
$is_admin = true;
if ( $is_admin ) {
echo 'Добро пожаловать, admin!';
$can_edit = true;
}В данном примере конструкция if выводит сообщение и устанавливает переменную $can_edit в true, если переменная $is_admin равна true.
Хорошей практикой является всегда использовать фигурные скобки с оператором if, даже если у него только одна инструкция для выполнения, как в данном случае:
<?php
if ( условие ) {
инструкция;
}Кроме того, вы можете использовать пробелы между выражением и фигурными скобками, чтобы сделать код более читабельным.
Вложенность конструкций if
Конструкцию if можно вложить в другую конструкцию if следующим образом:
<?php
if ( условие1 ) {
// сделать что-то
if( условие2 ) {
// сделать что-то другое
}
}В следующем примере показано, как вложить конструкцию if в другую конструкцию if:
<?php
$is_admin = true;
$can_approve = true;
if ($is_admin) {
echo 'Добро пожаловать, admin!';
if ($can_approve) {
echo 'Пожалуйста, одобрите ожидающие статьи';
}
}Встраивание конструкции if в HTML
Для вставки конструкции if в HTML документ вы можете использовать вышеуказанный синтаксис. Однако PHP предоставляет более удобный синтаксис, который хорошо позволяет смешивать конструкцию if с HTML:
<?php if ( условие ) : ?>
<!-- HTML код здесь -->
<?php endif; ?>В следующем примере используется конструкция if, которая показывает ссылку редактирования, если $is_admin имеет значение true:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Демонстрация конструкции if в PHP</title>
</head>
<body>
<?php $is_admin = true; ?>
<?php if ( $is_admin ) : ?>
<a href="#">Редактировать</a>
<?php endif; ?>
<a href="#">Посмотреть</a>
</body>
</html>Поскольку $is_admin равно true, скрипт отображает ссылку "Редактировать". Если вы измените значение $is_admin на false, вы не увидите Редактировать"Edit" в выводе.
Распространенная ошибка с конструкцией if в PHP
Распространенной ошибкой является использование неправильного оператора в конструкции if. Например:
<?php
$checked = 'on';
if( $checked = 'off' ) {
echo 'Флажок не установлен';
}Этот скрипт показывает сообщение, если $checked отключен. Однако выражение в конструкции if является присваиванием, а не сравнением:
$checked = 'off'Это выражение присваивает литеральную строку 'off' переменной $checked и возвращает эту переменную. Оно не сравнивает значение переменной $checked с 'off'. Таким образом, выражение всегда оценивается как true, что является некорректным.
Чтобы избежать этой ошибки, вы можете поместить значение сначала, перед оператором сравнения, а затем переменную после оператора сравнения, например:
<?php
$checked = 'on';
if( 'off' == $checked ) {
echo 'Флажок не установлен';
}Если вы случайно используете оператор присваивания (=), вместо этого PHP выдаст синтаксическую ошибку:
<?php
$checked = 'on';
if ('off' = $checked) {
echo 'Флажок не установлен';
}Parse error: syntax error, unexpected '=' ...Подытожим
- Конструкция
ifвыполняет инструкцию, если условие оценивается какtrue. - Всегда используйте фигурные скобки, даже если у вас есть только одна инструкция для выполнения в операторе
if. Это делает код более наглядным. - Используйте шаблон
if (value == $variable_name) {}для предотвращения возможных ошибок.
if elseif в PHP, которая позволяет выполнять блоки кода в зависимости от нескольких логических выражений. define() и ключевое слово const для определения констант.