Elementor Header #8

56. Оператор Элвис

1. Введение

Оператор Элвис, обозначаемый как ?:, представляет собой упрощённую форму тернарного оператора. Он позволяет сократить код, когда вам нужно вернуть значение по умолчанию, если выражение ложно или пусто. Этот оператор может быть полезен для улучшения читаемости и уменьшения количества кода.

2. Синтаксис оператора Элвис

Оператор Элвис имеет следующий синтаксис:

				
					result = expression ?: default_value;

				
			
  • expression — выражение, которое проверяется на истинность.
  • default_value — значение, которое будет возвращено, если expression является ложным или пустым.

3. Как работает оператор Элвис

Оператор Элвис действует следующим образом:

  • Если expression имеет истинное значение (не равно false, 0, пустой строке "", null или пустому массиву []), то результатом выражения будет значение expression.
  • Если expression имеет ложное значение, будет возвращено значение default_value.

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

4. Примеры использования оператора Элвис

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

				
					<?php
$username = ""; // Пустое значение

// Используем оператор Элвис для установки значения по умолчанию
$user = $username ?: "Guest";
echo $user; // Вывод: Guest
?>

				
			

В этом примере переменная $username пустая, поэтому будет использовано значение по умолчанию «Guest».

Пример с числовыми значениями:

				
					<?php
$score = 0; // Значение по умолчанию

// Используем оператор Элвис для проверки числового значения
$result = $score ?: 50;
echo $result; // Вывод: 50
?>

				
			

Здесь, поскольку $score равно 0, что является ложным значением, будет использовано значение по умолчанию 50.

Пример с функцией:

				
					<?php
function getUserRole() {
    return null; // Функция возвращает null
}

$role = getUserRole() ?: "user";
echo $role; // Вывод: user
?>

				
			

Функция getUserRole() возвращает null, что является ложным значением. Поэтому оператор Элвис возвращает значение по умолчанию «user».

5. Распространённые ошибки

5.1 Ошибка: Проблемы с типами данных

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

Пример ошибки:

				
					<?php
$input = "0"; // Строка с нулём

// Ошибка: Оператор Элвис интерпретирует "0" как ложное значение
$result = $input ?: "Default";
echo $result; // Вывод: Default
?>

				
			

Решение: Убедитесь, что вы понимаете, какие значения считаются ложными, и используйте оператор Элвис в контексте, где это значение соответствует вашим ожиданиям.

5.2 Ошибка: Неправильное использование с массивами

Когда expression — это массив, оператор Элвис может возвращать пустой массив, что может не соответствовать вашим ожиданиям.

Пример ошибки:

				
					<?php
$data = []; // Пустой массив

// Ошибка: Пустой массив интерпретируется как ложное значение
$result = $data ?: [1, 2, 3];
print_r($result); // Вывод: Array ( [0] => 1 [1] => 2 [2] => 3 )
?>

				
			

Решение: Убедитесь, что вы правильно учитываете, как пустые массивы обрабатываются оператором Элвис.

Заключение

Оператор Элвис предоставляет удобный способ обработки значений по умолчанию и упрощения кода. Он эффективен для случаев, когда вы хотите предоставить значение по умолчанию, если выражение пустое или ложное. Однако, как и любой инструмент, его нужно использовать с пониманием контекста, чтобы избежать неожиданных результатов.

6. Тестовое задание

Для закрепления материала выполните следующее задание:

  1. Напишите код, который проверяет, задано ли значение переменной $email. Если нет, присвойте ей значение по умолчанию «no-reply@example.com» и выведите результат.

  2. Создайте функцию getDiscount, которая принимает процент скидки. Если процент не указан или равен нулю, функция должна вернуть «No Discount». Используйте оператор Элвис для упрощения кода.

  3. Реализуйте функцию getUserName, которая возвращает имя пользователя из глобальной переменной. Если имя не установлено, используйте значение по умолчанию «Anonymous» с помощью оператора Элвис.

Пример выполнения задания:

				
					<?php
// 1. Проверка значения переменной
$email = ""; // Пустое значение

// Используем оператор Элвис для установки значения по умолчанию
$email = $email ?: "no-reply@example.com";
echo $email; // Вывод: no-reply@example.com

// 2. Функция getDiscount
function getDiscount($percent = 0) {
    return $percent ?: "No Discount";
}

echo getDiscount();      // Вывод: No Discount
echo getDiscount(15);   // Вывод: 15

// 3. Функция getUserName
function getUserName() {
    global $userName; // Имя пользователя из глобальной переменной
    return $userName ?: "Anonymous";
}

$userName = ""; // Пустое значение
echo getUserName(); // Вывод: Anonymous
?>

				
			

Удачи в выполнении задания и дальнейшем изучении PHP!

logo