if
Ключевое слово «if» в PHP позволяет условно выполнять код. В этой статье рассмотрены синтаксис и использование оператора «if» в PHP.
Оператор if в PHP
Оператор if — это механизм принятия решений в PHP. Он выполняет блок кода только тогда, когда условие истинно, и пропускает его в противном случае. Без него скрипт выполнял бы каждую строку сверху вниз, не имея возможности разветвляться — if является основой всей условной логики в PHP.
В этом руководстве рассматриваются синтаксис, то как PHP определяет, является ли условие «истинным», семейство операторов else/elseif, альтернативный синтаксис endif для шаблонов, сокращённые формы — тернарный оператор и оператор объединения с null, а также ошибки, которые часто совершают новички.
Базовый синтаксис
if (condition) {
// code that runs only when condition is true
}condition — это любое выражение, которое PHP может вычислить как истинное или ложное. Если оно истинно, выполняется код внутри фигурных скобок; если ложно, PHP пропускает блок и продолжает выполнение после него.
<?php
$age = 20;
if ($age >= 18) {
echo "You are an adult.";
}
// Output: You are an adult.Фигурные скобки необязательны, когда тело состоит из одного оператора, однако всегда используйте их — отсутствие скобок является частым источником ошибок, поскольку только первый оператор считается телом блока:
if ($age >= 18)
echo "Adult"; // runs conditionally
echo " — welcome"; // ⚠️ runs ALWAYS, it is not part of the ifКак PHP вычисляет условия (truthy и falsy)
Условие не обязано быть буквальным true/false — PHP преобразует любое значение в boolean. Следующие значения считаются falsy (ложными):
false0и0.0""(пустая строка) и"0"null- пустой массив
[]
Все остальные значения являются truthy. Это позволяет писать компактные проверки:
<?php
$name = "";
if ($name) {
echo "Hello, $name";
} else {
echo "No name provided."; // empty string is falsy
}
// Output: No name provided.Для составления условий обычно используются операторы сравнения и логические операторы. Полный список см. в PHP Operators.
<?php
$temp = 30;
if ($temp > 25 && $temp < 35) { // logical AND
echo "Warm but comfortable.";
}
// Output: Warm but comfortable.Добавление else и elseif
Одиночный if обрабатывает только один путь. Чтобы задать запасной вариант, добавьте else; для последовательной проверки нескольких условий используйте цепочку elseif:
<?php
$score = 72;
if ($score >= 90) {
echo "Grade: A";
} elseif ($score >= 70) {
echo "Grade: B";
} elseif ($score >= 50) {
echo "Grade: C";
} else {
echo "Grade: F";
}
// Output: Grade: BPHP проверяет каждое условие сверху вниз и выполняет первый блок, условие которого истинно, затем останавливается. Поскольку $score равно 72, проверка >= 90 не проходит, >= 70 проходит, а остальные пропускаются.
Подробные главы по этим операторам: PHP else, PHP elseif и полное руководство if...elseif...else. Когда нужно сравнить одну переменную со многими фиксированными значениями, оператор switch часто выглядит нагляднее.
Вложенные операторы if
Можно поместить if внутрь другого, чтобы проверить второе условие только при выполнении первого:
<?php
$loggedIn = true;
$role = "admin";
if ($loggedIn) {
if ($role === "admin") {
echo "Welcome to the admin panel.";
} else {
echo "Welcome back.";
}
}
// Output: Welcome to the admin panel.Глубокое вложение снижает читаемость — если вы обнаруживаете себя на третьем уровне вложенности, рассмотрите возможность объединения условий через && или раннего возврата.
Альтернативный синтаксис (if: / endif)
При смешивании PHP с HTML в шаблонах форма с двоеточием и endif читается лучше, чем разрозненные фигурные скобки:
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please log in.</p>
<?php endif; ?>Поведение аналогично варианту с фигурными скобками — это исключительно вопрос стиля для файлов представлений.
Сокращения: тернарный оператор и объединение с null
Для простых присваиваний «одно из двух» тернарный оператор сжимает if/else в одну строку:
<?php
$age = 16;
$status = ($age >= 18) ? "adult" : "minor";
echo $status;
// Output: minorКогда важно лишь то, существует ли значение (и не равно ли оно null), оператор объединения с null ?? чище, чем if (isset(...)):
<?php
$config = [];
$timeout = $config["timeout"] ?? 30; // use 30 if the key is missing
echo $timeout;
// Output: 30Практические примеры
<?php
// Example 1
$num = 10;
if ($num > 5) {
echo "The number is greater than 5." . PHP_EOL;
}
// Output: The number is greater than 5.
// Example 2
$color = "red";
if ($color == "blue") {
echo "The color is blue.";
} else {
echo "The color is not blue.";
}
// Output: The color is not blue.Распространённые ошибки
=вместо==. Выражениеif ($x = 5)присваивает 5 переменной$xи всегда является истинным. Для сравнения используйте==(нестрогое) или===(строгое, без приведения типов).==против===. С==выражения0 == "hello"и"1" == 1могут удивить, потому что PHP приводит типы. Предпочитайте===, когда типы должны совпадать.- Отсутствующие фигурные скобки вокруг многострочного тела — условным является только первый оператор.
- Путаница с truthy-значениями. Выражение
if ($value)ложно для0,""и[]; используйтеisset()или=== null, когда конкретно проверяете наличие значения.
Заключение
Оператор if позволяет PHP-программе выбирать действие во время выполнения. Освойте правила truthy/falsy, используйте elseif/else для обработки нескольких путей, применяйте альтернативный синтаксис endif в шаблонах и пользуйтесь тернарным оператором и ?? для лаконичных присваиваний. Далее изучите циклы PHP для повторения действий и оператор switch для ветвления по значениям.