The Ternary Operator
Часть раздела Основы путешествия по PHP на Coddy — урок 30 из 71.
Когда у вас есть простой if-else, который просто присваивает значение на основе условия, PHP предлагает более короткий способ его записи: тернарный оператор.
Синтаксис использует ? и : для создания компактного однострочного условного выражения:
<?php
$age = 20;
// Using if-else
if ($age >= 18) {
$status = "adult";
} else {
$status = "minor";
}
// Same thing with ternary operator
$status = $age >= 18 ? "adult" : "minor";
echo $status; // adult
?>Структура такая: condition ? value_if_true : value_if_false.
PHP сначала вычисляет условие. Если оно истинно, выражение возвращает значение после ?. Если ложно, возвращает значение после :.
<?php
$score = 45;
$result = $score >= 50 ? "Pass" : "Fail";
echo $result; // Не сдал
$isLoggedIn = true;
$greeting = $isLoggedIn ? "Welcome back!" : "Please log in";
echo $greeting; // Добро пожаловать обратно!
?>Тернарный оператор идеален для простых присваиваний либо-или. Для более сложной логики с несколькими условиями придерживайтесь инструкций if-elseif-else для лучшей читаемости.
Задание
ЛегкоПрочитайте два целых числа из ввода: score и passingScore.
Используйте тернарный оператор, чтобы определить результат на основе следующего:
- Если
scoreбольше или равноpassingScore, результат должен бытьPassed - Иначе результат должен быть
Failed
Выведите результат на первой строке.
Затем прочитайте целое число quantity из ввода. Используйте тернарный оператор, чтобы определить сообщение о доставке:
- Если
quantityбольше 10, сообщение должно бытьFree shipping - Иначе сообщение должно быть
Standard shipping
Выведите сообщение о доставке на второй строке.
Пример:
Если входные данные 75, 60 и 15, вывод должен быть:
Passed
Free shippingЕсли входные данные 45, 50 и 5, вывод должен быть:
Failed
Standard shippingШпаргалка
Тернарный оператор предоставляет компактный способ записи простых условных присваиваний if-else в одной строке.
Синтаксис: condition ? value_if_true : value_if_false
<?php
$age = 20;
// Using if-else
if ($age >= 18) {
$status = "adult";
} else {
$status = "minor";
}
// Same thing with ternary operator
$status = $age >= 18 ? "adult" : "minor";
echo $status; // adult
?>PHP сначала вычисляет условие. Если оно истинно, возвращается значение после ?. Если ложно, возвращается значение после :.
<?php
$score = 45;
$result = $score >= 50 ? "Pass" : "Fail";
echo $result; // Fail
$isLoggedIn = true;
$greeting = $isLoggedIn ? "Welcome back!" : "Please log in";
echo $greeting; // Welcome back!
?>Используйте тернарный оператор для простых присваиваний с выбором из двух вариантов. Для сложной логики с несколькими условиями используйте конструкции if-elseif-else для лучшей читаемости.
Попробуйте сами
<?php
// Считываем ввод
$score = intval(fgets(STDIN));
$passingScore = intval(fgets(STDIN));
$quantity = intval(fgets(STDIN));
// TODO: Напишите свой код ниже
// Используйте тернарный оператор, чтобы определить, является ли балл проходным или провальным
// Используйте тернарный оператор для определения сообщения о доставке
// Вывод результатов
echo $result . "\n";
echo $shippingMessage;
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators