制御構造におけるPHPブロックの外側のHTMLについて

PHPではPHPブロックとHTMLコードを混在させることが出来る。ここでは制御構造のif構文を例に基本的なルールを記載しておく。

まず以下のプログラム①では1つのPHPブロックの中でif構文の処理をしている。pタグはPHPのecho命令で出力される。

<?php
//user_checkは登録済みユーザーかどうかをチェックしてtrueかfalseを返す関数と仮定する
$is_registered_user = user_check($name, $password);
?>

<?php
if($is_registered_user) {
    echo '<p>登録済みユーザーです</p>';
}
?>

一方、以下のプログラム②ではPHPコードとHTMLコード(pタグ)が混在している。

<?php
//user_checkは登録済みユーザーかどうかをチェックしてtrueかfalseを返す関数と仮定する
$is_registered_user = user_check($name, $password);
?>

<?php if($is_registered_user): ?>
    <p>登録済みユーザーです</p> <!-- PHPブロックは閉じているが、pタグは依然としてPHPのif構文の中にいる -->
<?php endif; ?>

ここで重要なことは、if構文の途中で一度PHPブロックは閉じているが、pタグは依然としてPHPのif構文の中にいると解釈されることだ。つまり変数$is_registered_userがtrueの時はpタグの内容が表示されるが、falseの時は表示されない。プログラム②は最初のプログラム①と同じ結果となる。この仕組みはwhile構文やforeach構文など他の制御構造でも同様である。

コメント