Menu
Coddy logo textTech

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 文を使用してください。

challenge icon

チャレンジ

簡単

入力から2つの整数を読み取ってください:scorepassingScore

以下の条件に基づいて三項演算子を使用して結果を決定します:

  • scorepassingScore 以上であれば、結果は Passed となります
  • それ以外の場合、結果は Failed となります

結果を1行目に印刷します。

次に、入力から整数 quantity を読み取ります。三項演算子を使用して配送メッセージを決定します:

  • quantity が 10 より大きければ、メッセージは Free shipping となります
  • それ以外の場合、メッセージは Standard shipping となります

配送メッセージを2行目に印刷します。

例:

入力が 756015 の場合、出力は次のようになります:

Passed
Free shipping

入力が 45505 の場合、出力は次のようになります:

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;
?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン