<? switch ($var): ?>
<? case 1: ?>
It's 1!
<? break ?>
<? endswitch ?>
私はそのようなことをしたい、つまりPHPテンプレートでswitchステートメントを使用します。これはifステートメントで可能です。上記のコードはPHP 5.3でParse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT
を生成します。 PHP docs は、これが可能であることを示唆しています。
これが機能しないことを誰かが確認できますか、それとも、私が間違っていることを教えてもらえますか?
ありがとう。
私はあなたの例がうまくいかないはずであるとphpドキュメントで読みました。
Switchステートメントと最初のケースの間の出力(空白を含む)は、構文エラーになります。たとえば、これは無効です
代わりにこれを試してください:
<div>
<?php switch($variable):
case 1: ?>
<div>
Newspage
</div>
<?php break; ?>
<?php case 2: ?>
</div>
Forum
<div>
<?php break; ?>
<?php endswitch; ?>
</div>
あなたが持っている
?>\n\n<?
になるあなたのスイッチの後
switch($var):
echo "\n\t";
case 1:
スクリプトは、HTMLを装飾したものではなく、PHP HTMLを組み込んだものと考えてください。PHPバイナリが最初にファイルを取得します。
HEREDOCのようなものを使用して、エスケープされていないHTMLをエコーすることもできます。
私はこのフレンドリーなフォーマットを使用し、テストして機能します:
<? switch($var) : case 1 : ?>
<div>One</div>
<? break; case 2 : ?>
<div>Two</div>
<? break; case 3 : ?>
<div>Three</div>
<? break; endswitch; ?>
PHP 5.6で実行されている新しいスタイルの短いタグでスイッチまたはforeachステートメントを使用すると、同様の問題が発生しました。
私の場合:変更
<?=
switch ($number_of_columns) {
case "1":
echo '<div class="col-sm-12 col-md-12" >';
break;
case "2":
echo '<div class="col-sm-12 col-md-6" >';
break;
case "4":
echo '<div class="col-sm-6 col-md-3" >';
break;
default:
echo '<div class="col-sm-6 col-md-4" >';
}
?>
に
<?php
switch ($number_of_columns) {
case "1":
echo '<div class="col-sm-12 col-md-12" >';
break;
case "2":
echo '<div class="col-sm-12 col-md-6" >';
break;
case "4":
echo '<div class="col-sm-6 col-md-3" >';
break;
default:
echo '<div class="col-sm-6 col-md-4" >';
}
?>
構文エラーはありませんでした。つまり、構文エラー、予期しない「スイッチ」(T_SWITCH)