は、あなたがアップミキシングされていることですphpで 'if'構造を構築する2つの可能な形式です。
が
if (condition) instruction;
if (condition) { more; than; one; instructions; }
秒1は、次のとおりです:
最初の形式は、どちらかであるあなたなし
<?php if (condition) ?>
を...書く
if (condition): instruction; another; endif;
'{' または ' : ''タグの前に '?'タグがありますが、実際にはifコマンドを省略して指示を省略しているので、PHPはこれを受け入れます。 PHPタグをもう一度開くと、すでにifの外側にいることになります。
単一のブロックで命令を「忘れる」場合には、同じことは適用されません。ここで、 'endif;命令として許可されていません。だから、
:
<?php if (condition) ?>
anything outside the if
<?php instruction_outside_the_if; ?>
は...(あなたがいる場合手の込んだ、それの後に何もしないので)無意味ですが、厳密なエラーではありません。
<?php if (condition 1): ?> <!-- note the ':' in this if -->
<?php if (condition 2) ?>
anything outside the second if but inside the first
<?php endif; ?> <!-- this closes the first if
...ここでは動作しますが、2番目はまだ空です。
<?php if (condition 1): ?> <!-- note the ':' in this if -->
<?php if (condition 2) ?>
anything outside the second if but inside the first
<?php else: ?>
still outside the second if but inside the first, in the ELSE part
<?php endif; ?> <!-- this closes the first if
...これはelse(またはelseif)が最初のifに属しているあなたの例に多少似ています。
<?php if (true) ?>
<?php elseif(foo){ }; ?>
あなたは終了タグと開始タグの間では何も入れていないとして、別の例外ですので、パーサはそれらを「最適化」(正確にそのようではないですが、それは正しい近似です)それ。次のような2つのphpタグの間に何かを入れてみてください。
...「構文エラー、予期しないT_ELSEIF」が表示されます。
私はこれが有効であると争う。あなたはそれを成功させましたか?すべてのエラー? –
@Kerrek SB - はい、私はそれをテストしました。それは有効です、私は理由を知りませんでした。 –
@cwolves:私もやったし、 'Parse error:syntax error、unexpected T_ELSEIF' ...新しい例を試してみましょう。また、擬似コードではなく、実際のコードにしてください。 –