PHP 对 if() 块(和一般的块)有两种表示法样式。
首先,你有冗长的符号,它涉及在if()块的末尾明确说明。它看起来像这样:endif;
if(whatever):
do something
else:
do something else
endif;
和 行末尾的冒号很重要,因为否则 PHP 会认为你使用的是其他表示法(如下)。if
else
其次,你有大括号表示法,它看起来类似于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 } ?>
希望有所帮助。