PHP 对 if() 块(以及一般的块)有两种表示法。
首先,你有冗长的符号,它涉及在 if() 块的末尾明确声明 endif;。它看起来像这样:
if(whatever):
do something
else:
do something else
endif;
if 和 else 行末尾的冒号很重要,否则 PHP 会认为您使用的是其他符号(如下)。
其次,你有花括号符号,它看起来类似于 C 或 Perl 样式代码,看起来像这样:
if(whatever) {
do something
} else {
do something else.
}
使用这种样式表示法,如果你的块只有一行长,你可以不用花括号对。 (我个人认为像这样离开它们是不好的做法,但是很多人都信誓旦旦,而且它是完全有效的语法。但是当你在 PHP 代码之间切换时,我看到 PHP 对单行块感到困惑和 HTML;这就是为什么我总是喜欢使用大括号,即使我只写一行)。
你的问题是你混合了这两种符号。您正在尝试使用冗长的符号,但行中没有冒号,因此 PHP 认为您的意思是大括号符号。但是由于大括号符号允许遗漏大括号,PHP 将您的代码视为有效语法,即使它不会按您计划的那样工作。
您的解决方案是整理它,以便您肯定使用一种或另一种语法。如我的示例所示,在每个块的开头和结尾添加大括号({ 和 }}),或者添加冒号和 endif; 行。
所以您的代码应该类似于以下两个示例之一:
<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>
或者...
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
希望对您有所帮助。