【发布时间】:2021-10-03 01:38:24
【问题描述】:
嘿,我的这段代码导致我的网站彻底崩溃:
<select size="1" class="<?php echo $this->level; ?> mobilenav" onchange="document.location.href = '/'+this.value">
<?
if(/*$this->level == "level_1"*/ false) {
?>
<option value="">Navigation...</option>
<?php foreach ($this->items as $item):
$classes = explode(" ",$item["class"]);
?>
<optgroup label="<?= $item["link"] ?>">
<?= $item["subitems"] ?>
</optgroup>
<?php endforeach; ?>
<?
} else {
foreach ($this->items as $item):
$classes = explode(" ",$item["class"]);
?>
<?php if ($item['isActive'] || in_array("trail",$classes)): ?>
<option class="<?php echo $item['class']; ?>" selected="selected"><span class="<?php echo $item['class']; ?>"><?php echo $item['link']; ?></span></option>
<?php else: ?>
<option<?php if ($item['class']): ?> class="<?php echo $item['class']; ?>"<?php endif; ?> value="<?php echo $item['href']; ?>"><?php echo $item['link']; ?></option>
<?php endif; ?>
<?php endforeach;
}?>
</select>
故事:我正在升级我目前的旧网站,以便能够将其与最新版本的 PHP 一起使用。
这是我得到的错误:
[2021-07-27 08:08:38] request.CRITICAL: Uncaught PHP Exception ParseError: "syntax error, unexpected 'endforeach' (T_ENDFOREACH), expecting end of file" at /var/www/vhosts/web/templates/nav_dropdown.html5 line 20 {"exception":"[object] (ParseError(code: 0): syntax error, unexpected 'endforeach' (T_ENDFOREACH), expecting end of file at /var/www/vhosts/web/templates/nav_dropdown.html5:20)"} []
我不明白为什么它期望代码在第 20 行结束,也许有人对我有一个快速的答案? 提前致谢。 汉斯。
【问题讨论】:
-
那个语法曾经是正确的吗?我希望
<?php endforeach; ?> -
@Sam020 与什么相反?以下
}是单独的,关闭else 块。 -
在php7.4中你不能使用
<?你需要写<?php -
@IMSoP 对不起,这个语法有点新。但是我在示例中看到 foreach-loop 有两种不同的语法,对我来说,第二个 foreach 看起来没有关闭。但显然我错了:)
-
@Sam020 "endforeach;"可以去任何其他 PHP 代码可以去的任何地方。
<php foreach($a as $b): echo $b; endforeach; echo "done"; ?>完全有效。