Как и большинство языков программирования, PHP также позволяет писать код, который выполняет различные действия на основе результатов логических или сравнительных условий во время выполнения. Это означает, что вы можете создавать условия тестирования в форме выражений, которые оцениваются как true
или false
, и на основе этих результатов вы можете выполнять определенные действия.
В PHP есть несколько операторов, которые можно использовать для принятия решений:
- Оператор if;
- Оператор if…else;
- Оператор if…elseif….else;
- Оператор switch…case.
Мы рассмотрим каждый из них в этом разделе.
Оператор if
Оператор if используется для выполнения блока кода только в том случае, если указанное условие истинно. Это простейший условный оператор PHP, который можно записать так:
if(condition) {
// Код для выполнения
}
В следующем примере будет выведено «Хороших выходных!» если текущий день пятница:
<?php
$d = date("D");
if($d == "Fri") {
echo "Хороших выходных!";
}
?>
Оператор if…else
Вы можете улучшить процесс принятия решений, предоставив альтернативный выбор, добавив оператор else к оператору if. Оператор if…else позволяет вам выполнить один блок кода, если указанное условие оценивается как истинное, и другой блок кода, если оно оценивается как ложное. Его можно записать так:
if(condition) {
// Код для выполнения, если условие condition верно
} else {
// Код для выполнения, если условие condition ложно
}
В следующем примере будет выведено «Хороших выходных!» если текущий день — пятница, иначе будет выведено «Хорошего дня!»
<?php
$d = date("D");
if($d == "Fri") {
echo "Хороших выходных!";
} else {
echo "Хорошего дня!";
}
?>
Оператор if…elseif…else
if…elseif…else — специальный оператор, который используется для объединения нескольких операторов if…else.
if(condition1) {
// Код для выполнения, если condition1 истинно
} elseif(condition2) {
// Код для выполнения, если condition1 ложно, а condition2 истинно
} else{
// Код для выполнения, если и condition1, и condition2 ложны
}
В следующем примере будет выведено «Хороших выходных!» если текущий день пятница, и «Хорошего воскресенья!» если текущий день — воскресенье, иначе будет выведено «Хорошего дня!»
<?php
$d = date("D");
if($d == "Fri") {
echo "Хороших выходных!";
} elseif($d == "Sun") {
echo "Хорошего воскресенья!";
} else {
echo "Хорошего дня!";
}
?>
Вы узнаете о PHP-операторе switch-case в следующей главе.
Тернарный оператор
Тернарный оператор обеспечивает сокращенный способ написания операторов if…else. Тернарный оператор представлен знаком вопроса (?
) и принимает три операнда: условие для проверки, результат для true
и результат для false
.
Чтобы понять, как работает этот оператор, рассмотрим следующие примеры:
<?php
if($age < 18) {
echo 'Child'; // Отображаем "Child", если возраст меньше 18
} else {
echo 'Adult'; // Отображаем "Adult", если возраст больше или равен 18
}
?>
Используя тернарный оператор, тот же код можно написать более компактно:
<?php echo ($age < 18) ? 'Child' : 'Adult'; ?>
Тернарный оператор в приведенном выше примере выбирает значение слева от двоеточия (т.е. 'Child'
), если условие оценивается как истинное (т.е. если $age
меньше 18), и выбирает значение справа от двоеточия ( т.е. 'Adult'
), если условие оценивается как ложное.
Код, написанный с использованием тернарного оператора, может быть трудночитаемым. Однако это отличный способ писать компактные операторы if-else.
Нулевой оператор объединения (Null Coalescing) PHP 7
PHP 7 представляет новый оператор объединения с нулевым значением (??
), который вы можете использовать как сокращение, когда вам нужно использовать тернарный оператор в сочетании с функцией isset()
.
Чтобы лучше понять это, рассмотрим следующую строку кода. Он извлекает значение $_GET['name']
, если оно не существует или NULL
, оно возвращает ‘anonymous’.
<?php
$name = isset($_GET['name']) ? $_GET['name'] : 'anonymous';
?>
Используя нулевой оператор объединения, тот же код можно записать как:
<?php
$name = $_GET['name'] ?? 'anonymous';
?>
Как видите, этот синтаксис более компактен и прост в написании.