【PHP】レッスン2-03:条件演算子を使いこなそう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:条件演算子

この記事の練習問題を解くために必要な知識:
比較演算子と論理演算子if文による分岐処理条件演算子switch文による分岐処理for文による繰り返し処理while文による繰り返し処理繰り返しの制御エラーメッセージ例外処理

<<前のページ PHP記事一覧 次のページ>>

PHPの「条件演算子」とは

この章ではPHPにおける「条件演算子」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。




条件演算子(三項演算子)はPHPの制御構造の一つで、条件に応じて異なる値を返す際に使用される便利な構文です。

他の分岐構造(if文など)に比べて、コードを短く書けることが特徴です。

本記事では、条件演算子の基本的な使い方や注意点を学んでいきましょう。

条件演算子とは?

条件演算子は1つの条件を評価し、その結果に応じて2つの値のいずれかを選択します。

例えば「条件が真なら値A、そうでなければ値Bを返す」といった単純な条件分岐に役立ちます。

この演算子は「三項演算子」とも呼ばれます。名前の通り、1つの条件と2つの値を組み合わせて動作します。

以下が条件演算子の基本構文です:

条件式 ? 真の場合の値 : 偽の場合の値;

構文の各部分を分解して見てみましょう:

  • 条件式?の左側に記述する部分で、真偽値(trueまたはfalse)を返す必要があります。
  • 真の場合の値:条件式がtrueの場合に選択される値です。
  • 偽の場合の値:条件式がfalseの場合に選択される値です。

条件演算子の実用例

次に条件演算子を使ったコード例を示します。

<?php
$age = 20;

// 条件演算子を使用して「成人」か「未成年」かを判定
$status = ($age >= 18) ? "成人" : "未成年";

echo "あなたは {$status} です。";
  1. $ageが18以上の場合は"成人"が返され、それ以外は"未成年"が返されます。
  2. 結果として「あなたは 成人 です。」または「あなたは 未成年 です。」と表示されます。

もう一つ、入力値に基づいて応答を切り替える例です:

<?php
$input = 45;

// 数値が偶数か奇数かを判定
$result = ($input % 2 === 0) ? "偶数" : "奇数";

echo "{$input} は {$result} です。";
  • 条件演算子は一行で条件分岐を記述できるため、シンプルな条件分岐に最適です。
  • ただし複雑な条件分岐ではif文を使った方が可読性が高くなる場合があります。

条件演算子を使う際の注意点

条件演算子を使用する際に注意するべき内容を二つ紹介します。

可読性の問題

条件演算子を多用するとコードの可読性が低下することがあります。

特に、条件が複雑だったりネストされた場合には避けた方が良いでしょう。

// 推奨されない書き方
$result = ($a > $b) ? (($b > $c) ? "パターン1" : "パターン2") : "パターン3";

上記の例では、if文を使用した方が分かりやすくなります。

型の扱いに注意

条件演算子では真偽値に基づいて値を選択するため、型の不一致があると予期せぬ動作を引き起こす可能性があります。

型を明示するか厳密な比較演算子(===など)を使用することをお勧めします。

まとめ

条件演算子は、簡単な条件分岐を簡潔に記述するための強力なツールです。

ただし、コードの可読性や誤用を防ぐために、適切な場面で使用することが重要です。

この章で学んだことを活用し、次の「switch文による分岐処理」へのステップアップを目指しましょう。

条件演算子の練習問題:簡単な分岐処理を学ぼう

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;

正解コードの解説

今回作成したコードは2つの数値を比較して大きい方の数値を判定し、結果を表示するものです。

それではコードをブロックごとに分解して解説していきます。

数値を入力する部分

echo "1つ目の数値を入力してください: ";
$num1 = (int) fgets(STDIN); // 入力を整数に変換

echo "2つ目の数値を入力してください: ";
$num2 = (int) fgets(STDIN); // 入力を整数に変換
  • echo:画面にメッセージを表示するための関数です。ここでは「1つ目の数値を入力してください」というメッセージを表示しています。
  • fgets(STDIN):ユーザーが入力した値をプログラムに読み込むための関数です。この場合、標準入力(コンソール)からデータを受け取ります。
  • (int):受け取った入力を整数型に変換します。これにより文字列として扱われる入力を数値として処理できます。

条件演算子を使用して大きい方の数値を判定する部分

$max = ($num1 > $num2) ? $num1 : $num2;
  1. 条件演算子条件 ? 値A : 値Bという構文を持ちます。
    • $num1 > $num2num1num2より大きいかどうかを比較します。
    • ?:条件がtrueである場合に選ばれる値を指定します。この場合$num1が選ばれます。
    • ::条件がfalseである場合に選ばれる値を指定します。この場合$num2が選ばれます。
  2. $max:条件演算子の結果を保存する変数です。大きい方の数値が格納されます。

判定結果を表示する部分

echo "入力された数値: {$num1}, {$num2}" . PHP_EOL;
echo "大きい方の数値は {$max} です。" . PHP_EOL;

文字列の埋め込み"入力された数値: {$num1}, {$num2}"のようにダブルクォーテーション内で変数を使うことで、変数の値を文字列の一部として表示できます。

まとめ

このコードではPHPの基本的な構文とともに、条件演算子(条件 ? 値A : 値B)を用いた判定処理を学びました。

条件演算子はif文を簡潔に書き換えられる便利な構文です。

ただし条件が複雑になると可読性が低下する可能性があるため、使いどころを考えることが重要です。

今回学んだ内容を元に、さらにいろいろな条件で試してみることで、条件演算子の使い方に慣れていきましょう!

<<前のページ PHP記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    PHPのテキスト&問題集トップへ戻る
    トップページへ戻る