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'
かどうかのチェックを続けてしまいます。選択肢が互いに排他的(どれか一つしか選ばれない)な場合、これは非効率です。
そこで使うのがelseif
とelse
です。
elseif
: 最初のif
の条件が満たされなかった場合に、次の条件を判定します。else
: それまでのif
やelseif
のどの条件にも当てはまらなかった場合に、最終的に実行されます。
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
ブロックが実行された時点で残りのelseif
やelse
の判定はすべてスキップされます。これにより、より効率的で、意図が明確なコードになります。
もう一つの選択肢: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アプリケーション開発を目指しましょう。