PHPの条件分岐「if文」をマスター!入力値を分かりやすく表示する方法

Webフォームでは、ユーザーの選択を効率化するために、セレクトメニューやラジオボタンがよく使われます。このとき、プログラム側では「和食」や「洋食」といった文字列そのものではなく、「1」や「2」といった数値やコードでデータを受け取ることが一般的です。

しかし、受け取った「1」という数字をそのままユーザーに見せても意味が伝わりません。そこで必要になるのが、**「もしこの値だったら、こう表示する」というプログラムによる判断、すなわち「条件分岐」**です。

今回は、PHPで条件分岐を行う最も基本的な構文であるif文の使い方を、初心者にも分かりやすく解説します。


目次

プログラムの意思決定:「if文」の基本

if文は、プログラミングにおける意思決定の基本です。その構造は、私たちが日常的に考えることとよく似ています。

  • もし(if)8時になったら、家を出る」
  • もし(if)テストの点数が80点以上なら、合格」

PHPでは、この「もし〜なら、…する」を以下のように記述します。

if (条件式) {
    // 条件式が真(true)の場合に実行される処理
}

()の中に条件を書き、その条件が満たされた場合にのみ{}の中の処理が実行される、というシンプルな仕組みです。


if文で入力値を分かりやすい表示に変換する

それでは、フォームから送られてきたカテゴリ番号を、対応するジャンル名に変換する例を見てみましょう。

receive.php のサンプルコード:

<?php
// フォームから送信されたカテゴリ番号を取得
$category_id = $_POST['genre_id']; // 例として '2' が送信されたとする
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>出力結果</title>
</head>
<body>
    <h2>選択されたジャンル</h2>
    <p>
        <?php
            // カテゴリ番号に応じて表示を切り替える
            if ($category_id === '1') {
                echo "小説";
            }
            if ($category_id === '2') {
                echo "ビジネス書";
            }
            if ($category_id === '3') {
                echo "自己啓発";
            }
        ?>
    </p>
</body>
</html>

このコードでは、$category_idの値が'1'かどうか、'2'かどうか、'3'かどうかを順番に判定し、一致した場合にのみ対応する文字列を表示しています。


より効率的な書き方:if-elseif-else構文

上の書き方でも動作しますが、一つ問題があります。もし$category_id'1'だった場合でも、プログラムは律儀に'2''3'かどうかのチェックを続けてしまいます。選択肢が互いに排他的(どれか一つしか選ばれない)な場合、これは非効率です。

そこで使うのがelseifelseです。

  • elseif: 最初のifの条件が満たされなかった場合に、次の条件を判定します。
  • else: それまでのifelseifのどの条件にも当てはまらなかった場合に、最終的に実行されます。

if-elseif-elseを使った改善版コード:

<?php
$category_id = $_POST['genre_id'];
$genre_name = ''; // 表示用の変数を初期化

if ($category_id === '1') {
    $genre_name = "小説";
} elseif ($category_id === '2') {
    $genre_name = "ビジネス書";
} elseif ($category_id === '3') {
    $genre_name = "自己啓発";
} else {
    $genre_name = "その他"; // どの条件にも当てはまらない場合の処理
}

echo htmlspecialchars($genre_name, ENT_QUOTES, 'UTF-8');
?>

この書き方なら、例えば$category_id'1'だった場合、最初のifブロックが実行された時点で残りのelseifelseの判定はすべてスキップされます。これにより、より効率的で、意図が明確なコードになります。


もう一つの選択肢:switch

if-elseif-elseと似たような処理はswitch文でも書くことができます。一つの変数の値を、多数の候補と比較する場合には、こちらの方が見やすくなることがあります。

switch文を使った例:

<?php
$category_id = $_POST['genre_id'];
$genre_name = '';

switch ($category_id) {
    case '1':
        $genre_name = "小説";
        break;
    case '2':
        $genre_name = "ビジネス書";
        break;
    case '3':
        $genre_name = "自己啓発";
        break;
    default:
        $genre_name = "その他";
        break;
}

echo htmlspecialchars($genre_name, ENT_QUOTES, 'UTF-8');
?>

caseに指定した値と変数の値が一致すると、その中の処理が実行されます。break;は処理を中断してswitch文を抜けるための命令で、default:elseと同じく、どのcaseにも当てはまらなかった場合の処理です。

まとめ

今回は、PHPの条件分岐if文について学びました。

  • if (条件式) { 処理 } が条件分岐の基本。
  • 複数の選択肢を扱う場合は、ifを並べるより**if-elseif-else**を使う方が効率的で分かりやすい。
  • 比較対象がシンプルな値の場合は**switch**文も有効な選択肢。

条件分岐は、プログラムに知能を与え、状況に応じた柔軟な動作をさせるための根幹となる技術です。この仕組みをマスターして、より動的なWebアプリケーション開発を目指しましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次