【PHP】if文の使い方を初心者向けにわかりやすく解説
はじめに
皆さんはPHPでのプログラミングを学び始めるにあたって、どのような疑問を持つでしょうか。
最初にぶつかる大きなポイントのひとつが、条件分岐の実装方法ではないでしょうか。
条件分岐ができると、データの状態に応じて処理を変えたり、エラー時だけ別のメッセージを表示したりといった柔軟な動きを作り出せます。
そのため、まずはPHPのif文を理解することがとても重要です。
特に初心者のうちは「条件分岐の書き方がいまいちピンとこない」「どこにセミコロンを入れればいいか分からない」といった壁にぶつかるかもしれません。
ですが、if文の使い方を一度覚えてしまうと、あらゆるプログラムで共通して使える考え方にもつながります。
本記事では、PHPのif文の基本構文から応用的な使い方までを、なるべく具体的な例と実務での活用シーンを交えて解説していきます。
この記事を読むとわかること
- PHPのif文の基本的な構文とポイント
- if-else, if-elseif-else の使い方
- 実務での活用シーンの例
- よくあるエラーと対処法
if文とは
if文は、「もし○○であれば処理を行う」という条件分岐を実現する構文です。
たとえば「ユーザーがログインしていればダッシュボードにリダイレクトする」「フォームの入力が空欄であればエラーメッセージを表示する」など、条件によって処理を変化させたいときに活用できます。
このif文を使いこなすと、Webアプリケーションの動きを細かく制御できるようになります。
単純な分岐だけでなく、複数の条件を組み合わせて処理を進めることも可能になります。
現場では、以下のような場面で条件分岐が多用されます。
フォームのバリデーション
ユーザーの入力内容が正しいかを確かめ、不備があればメッセージを返す。
権限チェック
管理者であれば管理画面にアクセスできるようにし、一般ユーザーなら別の画面を表示する。
在庫や数値のチェック
製品の在庫数が0であれば「在庫切れ」と表示する。
初心者の方が最初につまずきがちなのは「どこまでがif文の範囲なのか」「elseをどのように書くのか」といった点です。
次の見出しから、具体的な記述方法を見ていきましょう。
if文の基本的な書き方
PHPのif文は次のような構文で書きます。
if (条件式) { // 条件がtrueの場合に実行する処理 }
丸括弧の中に**「true / false を返す式」**を書き、中括弧 { }
の中には「条件がtrueのときにのみ実行したいコード」を書きます。
たとえば、数値が10より大きい場合にメッセージを表示する例を見てみましょう。
$number = 15; if ($number > 10) { echo "数字は10より大きいです。"; }
上記の例では $number
が 15
なので、15 > 10
はtrueになります。
そのため、"数字は10より大きいです。"
と表示されるわけです。
基本的な流れとしては、 「条件が成立 (true) **の場合にだけ実行する」**という考え方を押さえておくとよいでしょう。
もし $number
が 5
など10以下の場合は、echo
の部分は実行されません。
条件式に使われる演算子
if文の条件式には以下のような演算子がよく使われます。
==
: 等しいかどうか===
: 型も含めて等しいかどうか!=
: 等しくないかどうか!==
: 型も含めて等しくないかどうか>
: より大きいかどうか<
: より小さいかどうか>=
: 以上かどうか<=
: 以下かどうか
たとえば文字列同士を比較する場合も ==
でチェックできます。
しかし、型の違いに敏感になりたいときは ===
を使うことが多いです。
if-else文の使い方
条件がtrueのときはAの処理、falseのときはBの処理、と2種類に分けたいときはif-else構文を使います。
if (条件式) { // 条件がtrueの場合の処理 } else { // 条件がfalseの場合の処理 }
たとえば以下の例では $age
が20以上であれば「成人です」と表示し、それ以下であれば「未成年です」と表示します。
$age = 18; if ($age >= 20) { echo "成人です。"; } else { echo "未成年です。"; }
こういった書き方ができると、ユーザーの行動やデータの状態に合わせた判断を簡単に実装できます。
実務のシーンでは「ログインしているかどうか」でメッセージの表示や画面遷移を切り替える際によく使われます。
if-elseif-else文の使い方
条件が複数ある場合は、if-elseif-else という形式で書くことができます。
基本構文は次の通りです。
if (条件式1) { // 条件式1がtrueの場合の処理 } elseif (条件式2) { // 条件式2がtrueの場合の処理 } else { // それ以外の場合の処理 }
たとえば以下のコードは、数値に応じて異なるメッセージを表示します。
$score = 75; if ($score >= 90) { echo "素晴らしい!ハイスコアです。"; } elseif ($score >= 60) { echo "合格点です。あと一息!"; } else { echo "もう少し頑張りましょう。"; }
$score >= 90
→true
なら「素晴らしい!ハイスコアです。」を表示$score >= 90
がfalseでも、$score >= 60
がtrueなら「合格点です。あと一息!」を表示- どちらもfalseなら「もう少し頑張りましょう。」を表示
if-elseif-else は、判定材料が多段階に分かれるときに便利です。
フォームの入力内容を段階的にチェックして、どの段階でエラーなのかを通知する、といった実装を行う場面でよく使われます。
実務でよくあるif文の活用例
PHPでif文を使う場面は非常に幅広いですが、ここではいくつかの代表的な実務シーンを挙げます。
フォームのエラー判定
入力必須のフィールドが空欄だったらエラーを表示するケースを考えてみましょう。
こうした場面では次のようにif文を組み合わせます。
$name = $_POST['name']; if ($name === "") { echo "名前を入力してください。"; } else { echo "送信完了。"; }
このように、入力チェックでif文を活用することで、ユーザーのミスを素早く検出できます。
実務では複数の入力項目を一度にチェックし、エラーがあればまとめて表示する、といった実装に発展させます。
ログイン認証チェック
ユーザーがログインしていなければログインページにリダイレクトする、といった場面もif文が役立ちます。
session_start(); if (!isset($_SESSION['user'])) { header('Location: login.php'); exit; } else { echo "ようこそ、".$_SESSION['user']."さん!"; }
!isset($_SESSION['user'])
は「$_SESSION['user']
が設定されていないならtrue」という意味です。- つまり「ログイン情報がないならログインページへ飛ばす」という条件分岐になります。
このように、アクセス制限や権限管理でもif文は欠かせません。
在庫数や数値チェック
在庫数が0なら「在庫切れ」を表示し、そうでなければ購入ボタンを表示する、といった使い方も多いです。
$stock = 3; if ($stock <= 0) { echo "在庫切れです。"; } else { echo "購入可能です。"; }
実際のECサイトなどでも、条件分岐を駆使してリアルタイムに状態を切り替える仕組みが組まれています。
条件式をまとめてチェックする方法
実務では「複数の条件を一度に判定する」こともよくあります。
その場合は、論理演算子を活用します。
代表的な論理演算子は以下の通りです。
&&
: かつ (AND)||
: または (OR)
たとえば「メールアドレスが空欄でなく、なおかつ@が含まれていればOK」という条件を書く場合は、次のように書けます。
$email = $_POST['email']; if ($email !== "" && strpos($email, "@") !== false) { echo "メールアドレスの形式が正しいとみなします。"; } else { echo "メールアドレスが正しくありません。"; }
「&&」は両方ともtrueにならなければtrueになりません。
一方、「||」は片方がtrueならtrueになります。
複数条件を組み合わせたいときは、論理演算子を上手に使ってみてください。
よくあるエラーと対処法
if文の構文ミスや変数名のタイプミスなど、初心者がよく遭遇するエラーについても押さえておきましょう。
中括弧の抜け漏れ
if文の開始ブロック {
を書き忘れたり、閉じブロック }
が足りなかったりするとエラーになります。
少しでもカッコの数が合わないとエラーが出るので、各ブロックの対応をしっかり確認しましょう。
セミコロンの付け忘れ
PHPでは、文の終わりにセミコロンを付ける必要があります。
if文の中に書いてある処理にセミコロンを書き忘れないようにしてください。
代入演算子 =
と比較演算子 ==
の混同
条件式の中で =
を使うと、値の代入になってしまいます。
比較する場合は ==
や ===
を使うように注意してください。
スペルミス・大小文字の混在
変数名や関数名のスペルを間違えるケースもよくあります。
PHPは大小文字を厳密に区別するので、「$Name」と「$name」はまったく別物になります。
if文とは直接関係ないように思えるかもしれませんが、このような単純なスペルミスで条件分岐が動かなくなることは実務でも珍しくありません。
比較演算子と型の扱い
PHPでは、==
と ===
の違いなど、型の扱いで混乱することがあります。
たとえば以下の例を見てみましょう。
$value1 = "10"; // 文字列の10 $value2 = 10; // 数値の10 if ($value1 == $value2) { echo "== では等しいと判断されます。"; } if ($value1 === $value2) { echo "=== でも等しいと判断されます。"; } else { echo "=== では等しくないと判断されます。"; }
==
は値が同じならtrueになる===
は値だけでなく「型」もチェックする- そのため、文字列 "10" と数値 10 は
==
ではtrueですが、===
ではfalse
実務においては型の違いが思わぬバグを生むことがあるため、意図した通りに判定できているかを常に確認するようにしましょう。
elseやelseifが不要なケース
ときには、「条件がtrueのときにだけ実行して、falseのときは何もしない」 という場面もあります。
たとえば先ほどのフォーム入力例で、値が存在するときだけメッセージを表示して、何もなければ一切表示しない場合などです。
その場合は、if単体だけで十分です。
if ($inputValue !== "") { echo "値が入力されています。"; }
判断するロジックはシンプルなほどバグが減りやすいです。
複数の分岐があるからといって必ずelseやelseifを使わなければいけないわけではありません。
実務で注意したいこと
実際のプロジェクトでは、if文が増えすぎて可読性が下がるケースがあります。
例えば、入れ子が深いif文を何重にも書くと後から見直す際に混乱することがあります。
if ($flag) { if ($userRole === "admin") { if ($age >= 20) { echo "特定の処理を実行"; } else { echo "未成年には許可されていません。"; } } else { echo "管理者権限が必要です。"; } } else { echo "処理不可フラグが立っています。"; }
こうした場合は、複雑なif文を見直す、あるいは判定ごとにメソッドを分けるなど、ロジックを整理すると可読性が上がります。
不要なネストを減らす方法としては、条件がfalseの場合に早めにreturnする、などの工夫が考えられます。
大規模なプロジェクトになればなるほど、可読性を高めるための工夫が必要になります。
if文はプログラムを柔軟にする一方で、乱用すると管理しづらいコードになりがちです。
まとめ
ここまで、PHPにおけるif文の基本構文から応用的な使い方、そして実務でのよくある事例までを順を追って解説してきました。
条件分岐はあらゆるプログラミング言語で活用される重要な要素で、フォームのエラー判定やログイン認証など多くの場面で欠かせません。
初心者の方はまず if文 → if-else文 → if-elseif-else文 の流れをしっかりと押さえるのがおすすめです。
その上で、論理演算子を使って複数条件を扱う方法や、型の違いに注意した比較演算子の使い方も併せて覚えておきましょう。
複数の条件が登場するほどif文が複雑になりやすいので、コードが読みにくくならないように注意しながら書いてみてください。
基本をしっかり学んでおけば、現場でも役立つ知識になるはずです。