プロが教えるわが家の防犯対策術!

時々見かけるのですが、PHPのソースに変わった形式で閉じタグが書かれている記載を散見いたします。

具体的にですが、以下のような形で書かれています。

<?php if(hoge1 === hoge2) {?>
処理
<?php }else if(hoge3 === hoge4){ ?>
処理
<?php }else if(hoge5 === hoge6){ ?>
処理



何でこのような書き方を行うのでしょうか?
処理の部分に他のPHPのタグがあるため回避しているのでしょうか?

閉じ分部の、{?> が特に気になるといいますか、気持ち悪いといいますか…。
ただ、この形で書かなければならない場合があると思うのですが、この書き方のルールが良くわかりません。

最後を {?> にしたり次の開始タグの<?php } で書く意味を教えて頂けないでしょうか?

コロンで書く、

<?php else: ?>

<?php endif; ?>

などはわかりやすいのですが…。
宜しくお願いいたします。

A 回答 (1件)

その「処理」の部分は、「PHP」ではなく「HTML」になっているはずです。



PHPスクリプトの見た目は、HTMLの中に<?PHP 〜 ?>でPHPが書かれている構造になっていますが、
PHP側から見ると、PHPの中に ?> 〜 <?PHP でHTMLが書かれている構造になっています。
そして、 ?> 〜 <?PHP は echo '〜' ; とほぼ同じです。

質問にあるプログラムは
if(hoge1 === hoge2) {
?> HTML<?php
} else if(hoge3 === hoge4){
?>HTML<?php
} else if(hoge5 === hoge6){
?> HTML

であり
if(hoge1 === hoge2) {
echo 'HTML';
} else if(hoge3 === hoge4){
echo 'HTML';
} else if(hoge5 === hoge6){
echo 'HTML';

になります。こう書けば、{} が必要な理由はわかるでしょう。

○ echoを使わない理由
echo '〜' だと、PHPの文字列の文法に縛られる。引用符とかエスケープシーケンスとかを考慮しなければならないことがある。
対して、 ?>〜<?PHP だと 〜 の部分は純粋にHTMLなので、PHPの文法には縛られない。
長かったりPHPでの特殊文字が多い場合は、HTMLで書いた方が楽。

○:を使った文法を使わない理由
・案外知られていない
・{} を使った構文の中で、キーワードを使った構文が異質に見える
    • good
    • 0
この回答へのお礼

有難うございます。
確かにHTMLの記述があります、これらを書きやすくするための記法だったのですね。ただ、使い慣れないと何だか違和感があります…。
自分でも使ってみて慣れていこうと思います。
有難うございました!!

お礼日時:2022/08/28 20:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!