Конструкция 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) {}
для предотвращения возможных ошибок.
define()
и ключевое слово const
для определения констант. if elseif
в PHP, которая позволяет выполнять блоки кода в зависимости от нескольких логических выражений.