The Ternary Operator
CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 30/71。
条件に基づいて値を割り当てるだけのシンプルな if-else がある場合、PHP ではそれをより短く書く方法を提供します:ternary operator。
この構文は ? と : を使用して、コンパクトな1行の条件式を作成します:
<?php
$age = 20;
// if-else を使用
if ($age >= 18) {
$status = "adult";
} else {
$status = "minor";
}
// 三項演算子を使った同じこと
$status = $age >= 18 ? "adult" : "minor";
echo $status; // adult
?>構造は:condition ? value_if_true : value_if_falseです。
PHP はまず条件を評価します。それが true の場合、式は ? の後の値を返します。false の場合、: の後の値を返します。
<?php
$score = 45;
$result = $score >= 50 ? "Pass" : "Fail";
echo $result; // 失敗
$isLoggedIn = true;
$greeting = $isLoggedIn ? "Welcome back!" : "Please log in";
echo $greeting; // ようこそおかえり!
?>三項演算子は、単純な二者択一の代入に最適です。複数の条件を含むより複雑な論理の場合、読みやすさのために if-elseif-else 文を使用してください。
チャレンジ
簡単入力から2つの整数を読み取ってください:score と passingScore。
以下の条件に基づいて三項演算子を使用して結果を決定します:
scoreがpassingScore以上であれば、結果はPassedとなります- それ以外の場合、結果は
Failedとなります
結果を1行目に印刷します。
次に、入力から整数 quantity を読み取ります。三項演算子を使用して配送メッセージを決定します:
quantityが 10 より大きければ、メッセージはFree shippingとなります- それ以外の場合、メッセージは
Standard shippingとなります
配送メッセージを2行目に印刷します。
例:
入力が 75、60、15 の場合、出力は次のようになります:
Passed
Free shipping入力が 45、50、5 の場合、出力は次のようになります:
Failed
Standard shippingチートシート
三項演算子 は、単純な if-else 代入を1行で書くためのコンパクトな方法を提供します。
構文は: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 はまず条件を評価します。true の場合、? の後の値を返します。false の場合、: の後の値を返します。
<?php
$score = 45;
$result = $score >= 50 ? "Pass" : "Fail";
echo $result; // Fail
$isLoggedIn = true;
$greeting = $isLoggedIn ? "Welcome back!" : "Please log in";
echo $greeting; // Welcome back!
?>単純な either-or 代入には三項演算子を使用してください。複数の条件を含む複雑なロジックには、可読性を高めるために 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