PHPスクリプトをhtmlに埋め込む場合のタグと構文

テンプレートばかり使ってると、たまにPHP直書きする時に「あれ〜、htmlに直でif文書く時ってなんかスッキリした書き方あったよね?」ってないですか。

1. ショートタグ

<?php
$a = 'hoge';
?>

<!-- 以下は等価 -->
<?php echo $a; ?>
<?= $a ?>
<?=$a?>

//出力
hoge
hoge
hoge

2. 制御構造の別構文

2-1. if

<?php
$a = 'hoge';
?>

<?php if ($a == 'hoge'): ?>
    A=='hoge'
<?php elseif ($a == 'fuga'): ?>
    A=='fuga'
<?php else: ?>
    A!='hoge', A!='fuga'
<?php endif; ?>

//出力
A=='hoge'

2-2. foreach

<?php
$ary = ['hoge', 'fuga'];
?>

<?php foreach ($ary as $key=>$val): ?>
    <?= $key ?> => <?= $val ?>
<?php endforeach; ?>

//出力
0 => hoge
1 => fuga

2-3. for

<?php for($i=1; $i<=10; $i++ ): ?>
    i=<?= $i ?>
<?php endfor; ?>

//出力
i=1;
i=2;
 :
i=10;

2-4. while

<?php
$i = 1;
?>

<?php while $i<=10): ?>
    i=<?= $i++ ?>
<?php endwhile; ?>

//出力
i=1;
i=2;
 :
i=10;

2-5. switch

<?php
$a = 1;
?>

<?php switch($a): ?>
<?php case 1: ?>        ←インデントNG *1
    A==1
    <?php break;?>
<?php case 2: ?>
    A==2
    <?php break;?>
<?php default;?>
    A==?
    <?php break;?>
<?php endswitch;?>

//出力
A==1;
*1 *switch文と最初のcaseの間に何か文字(空白もダメ)があると構文エラーになります。

3. あとがき

制御文の末尾に:を付けた構文は コロン構文 と呼ぶらしいです。

普段はテンプレート使ってるから、たまにhtmlにPHPスクリプトを埋め込む時に思い出せなくて困るんですよね。過去のソースをひっくり返して捜したりとかして、気がついたら30分無駄にしてるとか…(笑)

検索しても検索ワードが適当なのが思いつかなくって思うように行かなかったりして。もう大丈夫です「PHP コロン構文」で検索できます。