<? 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表明这应该是可能的。
有人可以确认这不起作用,或者说,告诉我我做错了什么?
感谢。
答案 0 :(得分:52)
我在php文档中读到你的例子应该不起作用。
switch语句和。之间的任何输出(包括空格) 第一种情况会导致语法错误。例如,这是无效的
请改为尝试:
<div>
<?php switch($variable):
case 1: ?>
<div>
Newspage
</div>
<?php break; ?>
<?php case 2: ?>
</div>
Forum
<div>
<?php break; ?>
<?php endswitch; ?>
</div>
答案 1 :(得分:15)
你有
?>\n\n<?
切换后
switch($var):
echo "\n\t";
case 1:
将您的脚本视为包含HTML的PHP,而不是装饰HTML。 PHP二进制文件首先获取文件。
您可能希望使用像HEREDOC这样的内容来回应未转义的HTML。
答案 2 :(得分:5)
我使用这种友好的格式,测试和工作:
'METADATA_LANGUAGE': 'no'
答案 3 :(得分:0)
在php 5.6上运行带有新样式short标签的switch或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)