PHPで条件文を使ってHTMLタグのまま出力する方法

  • PHP
  • 現在地

条件文を用いたHTMLブロックのスキップ

PHPでは、本来PHP構文の記述範囲外の部分はそのまま出力しますが、条件文の中にある場合は、条件に合わない部分をスキップします。

つまり、<?php ?> タグの外の部分の事です。

これにより、if文を利用してあらかじめ表示するコードを設定することができます。

if~else文の場合

  • <?php if($_POST['word'] != ''): ?>
    • <?php プログラムを記述 ?>
  • <?php else: ?>
    • <p>キーワードが入力されていません。</p>
  • <?php endif; ?>

ここでは、コロン(:)を使った 'if(): endif' の形式で if文を記述していますが、従来の 'if(){}' の形式でも同じことが可能です。

上の例では、POST で受け取った変数 word の値が空でない場合、プログラム処理を行い、空の場合はメッセージを出力することになります。

記述範囲内でif文を置いても同様のことはできるのですが、この方法の場合は echo や print で出力する手間を省けます。

ここまで記述したものは、公式の PHP-Manual 基本構文の中身のメモでしかないので、ここからは少し実験してみます。

switch文の場合

上記の、if文によるブロックごとの分岐が可能ということは、他の制御構文でもブロックごと分岐できるんじゃないかと思い、switch文で同じことをやってみました。

以下のサンプルコードは、form からPOSTパラメータとして渡した code の中身が、'1'の場合、無い場合、それ以外の場合で表示する文字列を変わるか試したものです。

HTML内のフォーム部分
  • <form method="post" action="test.php">
    • <input name="code" type="text" />
    • <input type="submit" value="送信" />
  • </form>
PHP(test.php)側
  • <?php switch($_POST['code']){ case '1': ?>
    • <p>'1' が入力されました。</p>
  • <?php break; case '': ?>
    • <p>code の中身が空です。</p>
  • <?php break; default: ?>
    • <p>値は '1' 以外の値でした。</p>
  • <?php break; } ?>

結果はエラーもなく、しっかり分岐されたうえで、break; によって条件に合わない部分を読み飛ばしてくれました。

この他にfor文でも同じような書き方でやってみたところ、囲んだ文字列を条件の数だけ繰り返して表示してくれました。

確かにPHP構文の記述範囲外にある部分も、条件文の中にあればPHPの処理に従ってくれるようです。

スポンサードリンク

inserted by FC2 system