PHPのViewでsyntax error, unexpected token “endforeach”, expecting “elseif” or “else” or “endif”が出た時に直す方法

PHPでView側のコーディングをしていると

Parse error: syntax error, unexpected token “endforeach”, expecting “elseif” or “else” or “endif”

というエラーが出てしまうことがあります。

そんな時に確認してほしいことをまとめました。

目次

endforach, endifなら「;」、それ以外なら「:」が語尾に書かれているか

通常構文ではなく代替構文で書いている場合、全部コロン形式で統一する必要があります。

つまり、if文でいうと

  • if(…):
  • elseif(…):
  • else(…):
  • endif;

という感じです。

endif以外は全部コロン(:)を付ける必要があり、

最後に、endif(;)だけはここで終了の意味のセミコロン(;)を書きます。

もし、endifでセミコロン(;)を書き忘れるとまだ処理が続いていると認識します。

なので、

確認事項

①foreach、if、elseif、else の後ろにコロン(:)が付いているか

②endforeach、endif の後ろにセミコロン(;)が付いているか

を確認しましょう。

波括弧({ })と混在させていないか

普通のPHPファイルのif文と同じく、波括弧({ })も使えます。

なのでif文で言えば、

<?php … { ?>
// 処理
<? } ?>

と書くことが出来ます。

これを

<?php … { ?>
// 処理
<? endif; ?>

なんて書いてしまうと違うものですがエラーになってしまいます。

このように、波括弧と代替構文を混在させていないかも、念のため一応確認しておきましょう。

短縮タグになっていないか

View側ので途中でPHPのコードを書くときは <?php … ?>と書きますよね。

それが <? … ?> という短縮タグとなっていると、環境によって無効なことがあります。

また、<?= … ?> 文字列を表示するための短縮コードなのでこちらも使ってはいけません。

なので上記2つの短縮コードになっていないか確認しましょう。

そして、<?php … ?> で統一することを強くお勧めします!

まとめ

  • 代替構文の場合、語尾の文字に適切なものが書かれているか
  • 波括弧と混在させていないか
  • 短縮タグになっていないか

エラーの正体は簡単なもののことが多いので、よく確認すればすぐに直せるものが多いです。

なお、短縮タグは検索で発見することが難しいので、きちんと確認することが必要ですね。

この記事が参考になってもらえれば嬉しいです。

  • URLをコピーしました!
目次