Что такое "тернарный оператор"? Приведите пример.php-4

Тернарный оператор (также известный как условный оператор) — это сокращённая форма конструкции if-else, которая позволяет присваивать значение переменной или возвращать результат выражения на основе условия в одной строке.

Синтаксис

Базовый синтаксис:

(условие) ? выражение_если_истина : выражение_если_ложь;

Простой пример

$age = 25;
$status = ($age >= 18) ? 'совершеннолетний' : 'несовершеннолетний';

echo $status; // выведет "совершеннолетний"

Особенности работы

  1. Возвращает значение (в отличие от if-else):
$score = 85;
$result = ($score >= 60) ? 'Пройдено' : 'Не пройдено';
  1. Может использоваться без присваивания:
echo ($is_logged_in) ? 'Добро пожаловать' : 'Пожалуйста, войдите';
  1. Может быть вложенным (хотя это ухудшает читаемость):
$grade = ($score >= 90) ? 'A' :
         ($score >= 80) ? 'B' :
         ($score >= 70) ? 'C' : 'D';

Сокращённая форма

Доступна с PHP 5.3:

$username = $_GET['user'] ?: 'Гость'; // Если $_GET['user'] пусто, вернёт 'Гость'

Эквивалентно:

$username = !empty($_GET['user']) ? $_GET['user'] : 'Гость';

Преимущества

  1. Компактность — уменьшает объём кода
  2. Удобство — часто используется для простых условий
  3. Читаемость — для простых случаев делает код понятнее

Недостатки

  1. Сложность — вложенные тернарные операторы трудно читать
  2. Ограниченность — не подходит для сложных условий с множеством ветвлений

Практические примеры

  1. Установка значения по умолчанию:
$items_per_page = (isset($_GET['per_page'])) ? (int)$_GET['per_page'] : 10;
  1. Проверка на null:
$display_name = $user->name ?? $user->login ?? 'Аноним';
  1. В шаблонах:
<div class="<?=($is_active) ? 'active' : 'inactive'?>">

Резюмируем:

тернарный оператор — это удобный инструмент для простых условных выражений, который делает код компактнее. Однако для сложных условий лучше использовать традиционные if-else конструкции для сохранения читаемости кода.