array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'control-structures.alternative-syntax.php', 1 => '制御構造に関する別の構文', ), 'up' => array ( 0 => 'language.control-structures.php', 1 => '制御構造', ), 'prev' => array ( 0 => 'control-structures.elseif.php', 1 => 'elseif/else if', ), 'next' => array ( 0 => 'control-structures.while.php', 1 => 'while', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'language/control-structures/alternative-syntax.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
PHPは、いくつかの制御構造、つまり、if
、
while
、for
、
foreach
、switch
に関する別の構文を提供します。
各構造において開き波括弧をコロン(:)、閉じ波括弧をそれぞれ
endif;
,endwhile;
,
endfor;
,endforeach;
,
endswitch;
に変更するのが
別の構文の基本的な形式となります。
<?php if ($a == 5): ?>
Aは5に等しい
<?php endif; ?>
上の例では、HTML ブロック "Aは5に等しい" はこの構文で
書かれた if
文の内部で入れ子になっています。
この HTML ブロックは、$a が 5 の場合にのみ表示されます。
この方法は、else
や elseif
にも同様に適用することができます。
次の例は、この形式で if
文を elseif
および else
とともに使用しています。
<?php
if ($a == 5):
echo "aは5に等しい";
echo "...";
elseif ($a == 6):
echo "aは6に等しい";
echo "!!!";
else:
echo "aは5でも6でもない";
endif;
?>
注意:
同じブロック内で別の構文を混ぜて使うことはできません。
switch
文と最初の
case
の間で何か (空白文字も含む) を出力すると、構文エラーになります。
たとえば、以下のコードは無効です。
<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch; ?>
一方、以下のコードは有効です。というのも、
switch
文の行末の改行文字は終了タグ
?>
の一部と見なされるため、
switch
と case
の間では何も出力されないからです。
<?php switch ($foo): ?>
<?php case 1: ?>
...
<?php endswitch; ?>