PHPでのif文の基本的な書き方から、HTMLに埋め込んでもキレイにスッキリ書く方法などもご紹介します。
HTMLの中に通常のif文のコードを埋め込むとソースが汚くなり、閉じ忘れや閉じ過ぎなどのネスト地獄に陥り、思わぬミスを誘発します。
この書き方で、ネストエラーを防ぎましょう。
目次
if文の基本
if文の使い方
1 2 3 4 5 6 7 |
// 変数に福岡を格納 $pref = '福岡'; // if文で変数と値を比較 if ($pref == '福岡') { echo '福岡です。'; } |
福岡です。
if文の構文
if文は以下のような構文になります。
1 2 3 |
if (条件式) { trueの場合の処理 } |
条件式
if文の条件式で、分岐の条件を決めます。
ifに続く()
(カッコ)内に条件式を書きます。
if文のさまざまな使い方
elseでfalseの場合も指定する
if文ではtrue
の場合とfalse
の場合の両方でそれぞれプログラムすることもできます。
成人と未成年を表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// 変数に年齢を格納 $age = 19; // if文で条件分岐させる // 年齢が20歳未満だったら… if ($age < 20) { echo '未成年です。'; // 年齢がそれ以上だったら… } else { echo '成人です。'; } |
if文の最後の}
(波カッコ)から続けてelse
と書いて同様に指定するだけですね。
elseifでさらに条件分岐
if文ではtrue
とfalse
の2つの条件だけではなく、true
とfalse
と別のtrue
といった、3つも4つも分岐するより複雑な条件分岐もできます。
成人と未成年を表示し、65歳以上なら「シニア」と表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// 変数に年齢を格納 $age = 19; // if文で条件分岐させる // 年齢が20歳未満だったら… if ($age < 20) { echo '未成年です。'; // 年齢が65歳以上だったら… } elseif ($age >= 65) { echo 'シニアです。'; // 年齢が上記以外だったら… } else { echo '成人です。'; } |
elseif
で2個め3個め…と複数の条件式を指定して、最後のelse
でどれにも当てはまらないプログラムを書きます。
else if
とelseとifの間に半角スペースを開けて書いても問題ありません。
ただ、後述するendif
を使った書き方だとエラーとなるため、elseif
とくっつけて書きましょう。
複数の条件分岐なら switch文も便利ですよ。
if文を使ったサンプル集
20歳未満なら未成年と表示
1 2 3 4 5 |
$age = 19; if ($age < 20) { echo '未成年です。'; } |
70点以上なら合格
1 2 3 4 5 |
$score = 82; if ($score >= 70) { echo '合格です!'; } |
男性ならあいさつする
1 2 3 4 5 |
$sex = '男性'; if ($sex == '男性') { echo 'こんにちは。'; } |
2ヶ月連続100万円なら連続達成と表示
1 2 3 4 5 6 |
$month01 = 120; $month02 = 141; if ($month01 >= 100 && $month02 >= 100) { echo '連続達成!!'; } |
if文と併せて使う演算子たち
if文は2つの値を比較して大きい、小さい、等しいなどと判定したり、複数の OR条件での分岐など、if文を補ってくれる演算子があります。
比較演算子(<=、==など)
条件式のカッコの中には比較する2つの値と、その間に比較演算子と呼ばれる記号が入っています。
比較演算子は左辺と右辺を比較して、等しいか、多いか少ないか、以上・以下などさまざまな比較をしてくれます。
比較演算子についてはこちら↓
論理演算子(AND、ORなど)
条件式のカッコの中に複数の条件を指定することもできます。
AND(&&)やOR(||)など、複数の条件に合致した場合にのみ表示させるなど、複雑な条件分岐が可能になります。
論理演算子についてはこちら↓
PHPでANDやORなどの論理演算子を使いこなす(&&や||など)
「endif」でHTMLに埋め込んでもキレイなソースが書ける
上記に紹介した書き方が一般的ですが、HTMLに埋め込んで書くと、コードがゴチャゴチャとなり、思わぬ構文エラーを引き起こしがちです。
HTMLに通常のif文を書いた場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<h2>年齢チェック</h2> <p>下記フォームで簡単にチェックできます。</p> <input type="text" name="age" value="<?php echo $age; ?>"> <?php if ($age < 20) { ?> <p><?php echo '未成年です。'; ?></p> <?php } elseif ($age >= 65) { ?> <p><?php echo 'シニアです。'; ?></p> <?php } else { ?> <p><?php echo '未成年です。'; ?></p> <?php } ?> |
なんかゴチャゴチャしてますね。
最後の波カッコとかよく忘れて、構文エラーになります。
以下のようにスッキリと書くこともできます。
HTMLにキレイなif文を書いた場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<h2>年齢チェック</h2> <p>下記フォームで簡単にチェックできます。</p> <input type="text" name="age" value="<?php echo $age; ?>"> // { の代わりに :(コロン)を記述 <?php if ($age < 20) : ?> <p>未成年です。</p> // elseifも { の代わりに :(コロン)を記述 <?php elseif ($age >= 65) : ?> <p>シニアです。</p> // elseも { の代わりに :(コロン)を記述 <?php else : ?> <p>未成年です。</p> // endifとセミコロンで閉じる <?php endif; ?> |
{ }
(波カッコ)を使わない代わりに、:
(コロン)を付け、一番最後にendif
を付けます。
endif
以外は;
(セミコロン)は不要です。
HTMLに埋め込むとソースが汚くなりがちですが、これでだいぶスッキリと書くことができますね。
この書き方でelseif
を「else if」とスペースを入れて書いてしまうとエラーになります。
条件分岐を一行でスッキリ書く
if文を一行で記述
単純なif文であれば、1行で処理できます。
1 2 3 4 5 |
// 年齢を変数に格納 $age = 19; // if文を1行で記述 if ($age < 20) echo '未成年です。'; |
未成年です。
{ }
(波カッコ)を省略し、改行せずに1行で記述するためスッキリしていますね。
else
がない単純なif文であればこの書き方もシンプルで好きですが、独特な記述法でもあるため、チームでコーディングする場合は一言断ってから使うとスムーズかもしれません。
たまに他所様のソースでこの記述法を見かけるため、知っておくと良いでしょう。
三項演算子
もっとスッキリ書きたいなら、一行で条件分岐が出来る「三項演算子」ですね。
その割にはイマイチ浸透していないようですが、たまに他所様のコードで見かけますので、知っておいて損はないでしょう。
三項演算子についてはこちら↓
他にもif文を使ったサンプルコードを載せています。↓
参考:PHPで日付が正しいかチェックする方法
参考:PHPで特定の文字列が含まれているかを判定する2つの方法
しましまのコントラストがありすぎて読みにくい
貴重なご意見ありがとうございます。
ソースコードの部分でしょうか?
今はコンテンツの充実に力を注いでいますが、落ち着いたらさらに見やすいデザインも心がけていきますので、今後ともflatFlagをよろしくお願いします。
ソースコードが黒いシマシマで読みにくかったです。
背景は黒か白一色にするのはいかがでしょうか?
貴重なご意見ありがとうございます。
シマシマの表示は読みにくいとのことで、単色での表示も検討させていただきます。
今後ともユーザー様にストレスなく閲覧頂けるよう努めていきますので、また何かご意見等ありましたらコメントください。
確かにコード部分のシマシマは見にくいですね…
良記事なだけにそこが目立ってストレスです…
指摘から5ヶ月以上変更が無いという事はシマシマ継続か…
修正を怠っているのか…
貴重なご意見ありがとうございます。
上記のとおり同様のご意見も頂戴しておりますので、保留にしていたこの件改善案含め検討させていただきます。
ご指摘ありがとうございます。