Время чтения ~ 10 сек. / 115 просмотров / 0 комментариев / Январь 14, 2024, 17:47

В этом уроке вы узнаете, как использовать тернарный оператор в PHP для сокращения кода и улучшения его читаемости.

Введение

Тернарный оператор — это сокращение оператора if...else. Вместо того, чтобы писать так:

<?php

if (условие) {
    $result = значение1;
} else {
    $result = значение2;
}

вы можете писать так:

$result = условие ? значение1 : значение2;

Как это работает.

  • Первое: PHP оценивает условие. Если оно истинно, выражение справа возвращает значение1; в противном случае оно возвращает значение2.
  • Второе: PHP присваивает результат выражения справа переменной $result.

Как видно, использование тернарного оператора позволяет сделать код более лаконичным.

Обратите внимание, что название тернарного оператора происходит от того факта, что этот оператор требует три операнда: выражение, значение1, значение2.

Примеры с тернарным оператором в PHP

Предположим, вы хотите отображать ссылку на вход, если пользователь не вошел в систему, и ссылку на выход, если пользователь уже вошел. Для этого вы можете использовать оператор if...else следующим образом:

<?php

$is_user_logged_in = false;

if ($is_user_logged_in) {
    $title = 'Выход';
} else {
    $title = 'Вход';
}

В этом примере $title будет 'Вход', потому что $is_user_logged_in установлен в false. Код довольно длинный. И вы можете сделать его более коротким, используя тернарный оператор следующим образом:

<?php

$is_user_logged_in = false;

$title = $is_user_logged_in ? 'Выход' : 'Вход';

Теперь код гораздо короче. Если строка слишком длинная, вы всегда можете разбить ее так:

<?php

$is_user_logged_in = false;

$title = $is_user_logged_in
            ? 'Выход'
            : 'Вход';

Сокращенная форма тернарного оператора

Начиная с PHP 5.3, вы можете использовать сокращенную форму тернарного оператора следующим образом:

$result = $initial ?: $default;

В этом синтаксисе PHP оценивает $initial в логическом контексте (boolean). Если $initial истинно, PHP присваивает значение $initial переменной $result. В противном случае оно присваивает $default переменной $result.

В следующем примере используется сокращенная форма тернарного оператора для присвоения значения $path переменной $url, если $path не пуст. Если $path пуст, тернарный оператор присваивает литеральную строку ‘/’ переменной $url:

<?php

$path = '/about';
$url = $path ?: '/';

echo $url; // /about

Вывод:

/about

Цепочка тернарных операторов

Технически вы можете соединять тернарные операторы, используя круглые скобки.

Предположим, вы хотите отображать различные сообщения, если пользователи имеют право и достаточно кредитов. В следующем примере используются два тернарных оператора в цепочке:

<?php

$eligible = true;
$has_credit = false;

$message = $eligible
            ? ($has_credit
                    ? 'Можно использовать кредиты'
                    : 'Недостаточно кредитов')
            : 'Нет прав покупать';

echo $message;

В большинстве случаев цепочка нескольких тернарных операторов делает код более сложным для восприятия. В таких случаях лучше использовать конструкции if...else или if...elseif.

Подытожим

  • Тернарный оператор (?:) является сокращенной формой конструкции if...else.
  • Используйте тернарный оператор, когда это делает ваш код более лаконичным и читаемым.
Теги:
php
Конструкция if elseif - PHP
Конструкция switch - PHP
Язык разметки Markdown с примерами
Декабрь 18, 2023, 20:55
Примеры использования языка разметки Markdown.
Арифметические операторы - PHP
Январь 11, 2024, 18:45
В этом уроке вы узнаете об арифметических операторах, такие как сложение, вычитание, умножение, деление, возведение в степень и деление по модулю, для выполнения арифметических операций.
Цикл for - PHP
Март 04, 2024, 17:51
В этом уроке вы узнаете об операторе for в PHP для многократного выполнения блока кода.
Логический тип (Boolean) - PHP
Январь 05, 2024, 15:41
В этом уроке вы узнаете о логическом типе данных и логических значениях PHP.
Операторы сравнения - PHP
Январь 10, 2024, 17:48
В этом уроке вы узнаете, как использовать операторы сравнения в PHP для сравнения двух значений.