【PHP】Lesson2-3:三項演算子(条件演算子)を理解しよう

一つ前のレッスンでは if文による分岐処理 について学習しました。
今回は 三項演算子(条件演算子) について見ていきましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
・Lesson2-1:比較演算子と論理演算子
・Lesson2-2:if文による分岐処理を理解しよう
・Lesson2-3:三項演算子を使いこなそう ◁今回はココ
・Lesson2-4:switch文による分岐処理を理解しよう
・Lesson2-5:for文による繰り返し処理を理解しよう
・Lesson2-6:while文による繰り返し処理を理解しよう
・Lesson2-7:繰り返しを制御しよう
・Lesson2-8:エラーメッセージを読めるようになろう
・Lesson2-9:例外処理を理解しよう
・確認問題2-1:ハイアンドロー ゲームを作ろう
・確認問題2-2:数字当てゲームを作ろう
・確認問題2-3:シンプルなじゃんけんゲームを作ろう
Lesson3:関数編
Lesson4:データ構造編
Lesson5:クラス編
三項演算子(条件演算子)の基本と使い方ガイド
PHPで条件分岐をより簡潔に書くために便利な「三項演算子」について、初心者にもわかりやすく解説します。
本記事では、三項演算子の基本的な使い方やif文との違い、実際のコード例まで丁寧に紹介。これをマスターすれば、よりスッキリとした分岐処理が書けるようになります。
ぜひ最後まで読んで、スマートなPHPコードの書き方を身につけましょう!

三項演算子(条件演算子)とは?使い方と仕組みを解説
三項演算子 は1つの条件を評価し、その結果に応じて2つの値のいずれかを選択する演算子です。
例えば「条件が真なら値A、そうでなければ値Bを返す」といった単純な条件分岐に役立ちます。
この演算子は「条件演算子」とも呼ばれ、名前の通り1つの条件と2つの値を組み合わせて動作します。
以下が条件演算子の基本構文です:
条件式 ? 真の場合の値 : 偽の場合の値;
構文の各部分を分解して見てみましょう:
- 条件式:
?
の左側に記述する部分で、真偽値(true
またはfalse
)を返す必要があります。 - 真の場合の値:条件式が
true
の場合に選択される値です。 - 偽の場合の値:条件式が
false
の場合に選択される値です。
三項演算子の使い方|サンプルコードで理解しよう
次に三項演算子を使ったコード例を示します。
<?php $age = 20; // 条件演算子を使用して「成人」か「未成年」かを判定 $status = ($age >= 18) ? "成人" : "未成年"; echo "あなたは {$status} です。";
$age
が18以上の場合は"成人"
が返され、それ以外は"未成年"
が返されます。- 結果として「あなたは 成人 です。」または「あなたは 未成年 です。」と表示されます。
このコードの三項演算子の部分ををif文を使って書くと以下のようになります。
if ($age >= 18) { $status = "成人" }else{ $status = "未成年" }
三項演算子を使用することで、コードが短くシンプルになっている点に着目しましょう。
もう一つ、入力値に基づいて応答を切り替える例を紹介します。
<?php $input = 45; // 数値が偶数か奇数かを判定 $result = ($input % 2 === 0) ? "偶数" : "奇数"; echo "{$input} は {$result} です。";
- 三項演算子は一行で条件分岐を記述できるため、シンプルな条件分岐に最適です。
- ただし複雑な条件分岐では
if
文を使った方が可読性が高くなる場合があります。
三項演算子の注意点|可読性と型の扱いで気をつけるべきこと
三項演算子を使用する際に注意するべき内容を二つ紹介します。
三項演算子の可読性問題とネストの注意点
三項演算子を多用するとコードの可読性が低下することがあります。
特に、条件が複雑だったりネストされた場合には避けた方が良いでしょう。
// 推奨されない書き方 $result = ($a > $b) ? (($b > $c) ? "パターン1" : "パターン2") : "パターン3";
上記のような例では、if
文を使用した方が分かりやすくなります。
三項演算子における型の一致と安全な比較
三項演算子では真偽値に基づいて値を選択するため、型の不一致があると予期せぬ動作を引き起こす可能性があります。
型を明示するか厳密な比較演算子(===
など)を使用することをお勧めします。
まとめ|三項演算子の使い方と注意点総まとめ
この記事では、PHPの三項演算子(条件演算子)の仕組みや使い方、実際のコード例、そして注意点までを体系的に学びました。
これで、分岐処理をより簡潔かつスマートに記述できるようになったはずです。
さらに実践的なコードに挑戦し、プログラムの可読性や効率性を高めていきましょう!
演習問題|三項演算子を使って数値の大小を判断するコードを作ろう

2つの数値を比較し、大きい方の数値を判定するプログラムを作成してください。
この練習では三項演算子を使って分岐処理を学びます。
ユーザーに2つの数値を入力してもらい、それを比較して大きい方の数値を画面に表示するプログラムを完成させましょう。
この演習の要件
以下の要件に従ってコードを完成させてください。
- ユーザーに2つの数値を入力してもらい、それを変数
$num1
と$num2
にそれぞれ格納すること。 - 条件演算子を使用して、入力された2つの数値のうち大きい方の数値を変数
$max
に格納すること。 $max
の値を使って「大きい方の数値は ○○ です。」と画面に表示すること。
ただし、以下のような実行結果となること。
1つ目の数値を入力してください: 10 2つ目の数値を入力してください: 20 入力された数値: 10, 20 大きい方の数値は 20 です。
解き方のヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:「1つ目の数値を入力してください: 」と出力
2:ユーザーから入力を取得し、整数型に変換して変数$num1に代入
3:「2つ目の数値を入力してください: 」と出力
4:ユーザーから入力を取得し、整数型に変換して変数$num2に代入
5:条件演算子を用いて、変数$num1と$num2の大きい方を変数$maxに代入
6:「入力された数値: {$num1}, {$num2}」と出力
7:「大きい方の数値は {$max} です。」と出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
<?php // 1つ目の数値を入力してもらいます echo "1つ目の数値を入力してください: "; $num1 = (int) fgets(STDIN); // 入力を整数に変換 // 2つ目の数値を入力してもらいます echo "2つ目の数値を入力してください: "; $num2 = (int) fgets(STDIN); // 入力を整数に変換 // 条件演算子を使用して大きい方の数値を判定 /*【穴埋め問題1】ここで条件演算子を使って変数$maxに大きい方の数値を代入するコードを書いてください。*/ // 結果を表示 echo "入力された数値: {$num1}, {$num2}" . PHP_EOL; echo "大きい方の数値は {$max} です。" . PHP_EOL;
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
演習問題の答え合わせ
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
<?php // 1つ目の数値を入力してもらいます echo "1つ目の数値を入力してください: "; $num1 = (int) fgets(STDIN); // 入力を整数に変換 // 2つ目の数値を入力してもらいます echo "2つ目の数値を入力してください: "; $num2 = (int) fgets(STDIN); // 入力を整数に変換 // 条件演算子を使用して大きい方の数値を判定 $max = ($num1 > $num2) ? $num1 : $num2; // num1がnum2より大きければnum1、そうでなければnum2 // 結果を表示 echo "入力された数値: {$num1}, {$num2}" . PHP_EOL; echo "大きい方の数値は {$max} です。" . PHP_EOL;
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
数値を入力する部分
echo "1つ目の数値を入力してください: "; $num1 = (int) fgets(STDIN); // 入力を整数に変換 echo "2つ目の数値を入力してください: "; $num2 = (int) fgets(STDIN); // 入力を整数に変換
echo
:画面にメッセージを表示するための関数です。ここでは「1つ目の数値を入力してください」というメッセージを表示しています。fgets(STDIN)
:ユーザーが入力した値をプログラムに読み込むための関数です。この場合、標準入力(コンソール)からデータを受け取ります。(int)
:受け取った入力を整数型に変換します。これにより文字列として扱われる入力を数値として処理できます。
条件演算子を使用して大きい方の数値を判定する部分
$max = ($num1 > $num2) ? $num1 : $num2;
- 条件演算子:
条件 ? 値A : 値B
という構文を持ちます。$num1 > $num2
:num1
がnum2
より大きいかどうかを比較します。?
:条件がtrue
である場合に選ばれる値を指定します。この場合$num1
が選ばれます。:
:条件がfalse
である場合に選ばれる値を指定します。この場合$num2
が選ばれます。
- $max:条件演算子の結果を保存する変数です。大きい方の数値が格納されます。
判定結果を表示する部分
echo "入力された数値: {$num1}, {$num2}" . PHP_EOL; echo "大きい方の数値は {$max} です。" . PHP_EOL;
文字列の埋め込み:
"入力された数値: {$num1}, {$num2}"
のようにダブルクォーテーション内で変数を使うことで、変数の値を文字列の一部として表示できます。