【发布时间】:2011-06-23 12:20:53
【问题描述】:
<? switch($data['type']) : ?>
<? case 'log': ?>
<? while ($row = $data['loop']->fetch()) : ?>
<table class="t-errors">
<tr>
<td>
<b>IP:</b> <? echo $row['LogShellIP']; ?>
<b>Command:</b> <? echo $row['LogShellCommand']; ?>
<b>Executed:</b> <? echo $row['LogShellReturn']; ?>
<b>Time:</b> <? echo format::time($row['LogShellTime']); ?>
</td>
</tr>
</table>
<? endwhile; ?>
<? break; ?>
<? case 'fatal': ?>
<? case 'warning': ?>
<? case 'notice': ?>
<? case 'unknown': ?>
<? while ($row = $data['loop']->fetch()) : ?>
<table class="t-errors">
<tr>
<td <? if ($row['LogErrorSeen'] == 0) { echo 'class="e-selected"'; } ?>>
<b>String:</b> <? echo $row['LogErrorString']; ?>
<b>File:</b> <? echo $row['LogErrorFile']; ?>
<b>Line:</b> <? echo $row['LogErrorLine']; ?>
<b>Context:</b> <? echo $row['LogErrorContext']; ?>
<b>Ip:</b> <? echo $row['LogErrorIP']; ?>
<b>Time:</b> <? echo format::time($row['LogErrorTime']); ?>
</td>
</tr>
</table>
<? endwhile; ?>
<? break; ?>
<? endswitch; ?>
我收到此错误:
解析错误:语法错误,意外 T_INLINE_HTML,期待 T_ENDSWITCH 或 T_CASE 或 T_DEFAULT 在 /Applications/XAMPP/xamppfiles/htdocs/Smooth 框架/tpl/terminal.tpl.php上线 33
其中33 行是此脚本的2 行。这被插入到模板上下文中。这有什么问题?他期待的是T_CASE,就是这样!
【问题讨论】:
-
错误可能潜伏在您省略的 31 行中的任何一行中
-
首先,不要使用短标签。并且不要像那样不断地闯入和跳出 PHP 上下文,这真的丑陋。如果你解决了这个问题,你可能会发现错误会立即消失。
-
@Mchl,一点也不。 PHP 错误行总是指前一行或当前行。所以第 33 行中的错误可能在第 33 行或第 32 行,而不是之前的。既然显示的是 32,那为什么 PHP 没有停在 32 呢?
-
@Charlie:在这种情况下,你是对的。但在一般情况下,错误可能出现在文件中的任何位置。引用的行号仅是 compiler/parser 发现错误的地方,而不是实际发生的地方。它可能是 30 行回来。在这种情况下不是。重新格式化你的代码,你会没事的......
-
@Charlie Pigarelli:不要那么确定 ;) 根据您在前几行中的内容,
//注释中缺少逗号或?>可能会在下面显示许多行.
标签: php html switch-statement