プログラミングにおいて、条件によって処理を分岐させることは最も基本的な制御構造の一つです。PHPではif文を使って「もし〜なら、こうする」という条件分岐を記述できます。
この記事では、PHPのif文の基本的な書き方から、else、elseifを使った複数条件の分岐、さらに実践的な使用例まで詳しく解説します。
基本的な使い方
if文の基本構文は非常にシンプルです。条件式がtrueの場合にのみ、ブロック内の処理が実行されます。
<?php
$age = 20;
if ($age >= 18) {
echo "成人です。\n";
}
$score = 85;
if ($score >= 80) {
echo "合格です!\n";
}
?>
成人です。
合格です!
if文の条件式は丸括弧 () の中に記述します。条件式がtrueと評価された場合、波括弧 {} の中の処理が実行されます。条件式がfalseの場合は何も実行されません。
if...else文
条件がfalseの場合にも処理を行いたいときは、elseを使います。
<?php
$age = 15;
if ($age >= 18) {
echo "成人です。\n";
} else {
echo "未成年です。\n";
}
$number = 7;
if ($number % 2 === 0) {
echo "$number は偶数です。\n";
} else {
echo "$number は奇数です。\n";
}
?>
未成年です。
7 は奇数です。
elseブロックは、if文の条件がfalseの場合に必ず実行されます。つまり、ifとelseのどちらか一方が必ず実行される構造になります。
if...elseif...else文
3つ以上の条件で分岐したい場合は、elseifを使います。上から順番に条件が評価され、最初にtrueになった条件のブロックだけが実行されます。
<?php
$score = 75;
if ($score >= 90) {
echo "評価: A(優秀)\n";
} elseif ($score >= 80) {
echo "評価: B(良好)\n";
} elseif ($score >= 70) {
echo "評価: C(普通)\n";
} elseif ($score >= 60) {
echo "評価: D(要努力)\n";
} else {
echo "評価: F(不合格)\n";
}
?>
評価: C(普通)
elseifは何個でも連続して使えます。条件は上から順に評価されるため、順番が重要です。例えば上の例で $score >= 70 を最初に書いてしまうと、90点の人も「普通」と判定されてしまいます。
比較演算子と論理演算子
if文の条件式では、さまざまな比較演算子と論理演算子を組み合わせて使います。
<?php
$age = 25;
$hasLicense = true;
// AND条件(&&):両方trueの場合
if ($age >= 18 && $hasLicense) {
echo "運転できます。\n";
}
$day = "日曜日";
// OR条件(||):どちらかがtrueの場合
if ($day === "土曜日" || $day === "日曜日") {
echo "休日です。\n";
}
$isLoggedIn = false;
// NOT条件(!):trueとfalseを反転
if (!$isLoggedIn) {
echo "ログインしてください。\n";
}
?>
運転できます。
休日です。
ログインしてください。
&&(AND)は両方の条件がtrueの場合にtrue、||(OR)はどちらか一方がtrueの場合にtrue、!(NOT)は真偽を反転させます。これらを組み合わせることで、複雑な条件分岐が可能になります。
単純なif...elseは三項演算子で1行にまとめられます。$result = ($age >= 18) ? "成人" : "未成年"; のように書きます。ただし、複雑な条件では可読性が下がるので使いすぎに注意しましょう。
実践的な使用例
実際の開発でよく使われるif文のパターンを見てみましょう。
<?php
// フォーム入力のバリデーション
$username = "taro";
$email = "taro@example.com";
if (empty($username)) {
echo "ユーザー名を入力してください。\n";
} elseif (strlen($username) < 3) {
echo "ユーザー名は3文字以上にしてください。\n";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "正しいメールアドレスを入力してください。\n";
} else {
echo "登録完了: $username ($email)\n";
}
// null合体演算子との組み合わせ
$config = ['debug' => true];
$debugMode = $config['debug'] ?? false;
if ($debugMode) {
echo "デバッグモードが有効です。\n";
}
?>
登録完了: taro (taro@example.com)
デバッグモードが有効です。
if ($x = 5) は代入であり、常にtrueになります。比較には == または === を使いましょう。この間違いはバグの原因として非常に多いので、注意が必要です。
まとめ
- if文は条件式がtrueの場合にブロック内の処理を実行する
- elseで条件がfalseの場合の処理を、elseifで複数条件の分岐を記述できる
- &&(AND)、||(OR)、!(NOT)で複雑な条件を組み合わせられる
- elseifの条件は上から順に評価されるため、記述順序が重要
- 比較には == ではなく === を使い、型も含めた厳密な比較を心がける