PHP代码中的条件语句在HTML代码之间
在PHP中使用由HTML代码分隔的条件语句有点问题。这就是我试图编写的代码类型。这是一个配置文件页面,只有其配置文件所在的用户才能看到它(我使用会话变量进行检查):PHP代码中的条件语句在HTML代码之间,php,html,conditional-statements,Php,Html,Conditional Statements,在PHP中使用由HTML代码分隔的条件语句有点问题。这就是我试图编写的代码类型。这是一个配置文件页面,只有其配置文件所在的用户才能看到它(我使用会话变量进行检查): 但这不起作用。我还尝试使用速记法,在if的末尾放一个:,并使用endif语句,但没有成功。(在早期的一个项目中,:方法适用于foreach和endforeach,所以我想我会尝试一下) 有什么想法吗 试着用括号把条件分开 <?php if(check if user is logged in) { ?> <di
但这不起作用。我还尝试使用速记法,在if
的末尾放一个:
,并使用endif
语句,但没有成功。(在早期的一个项目中,:
方法适用于foreach
和endforeach
,所以我想我会尝试一下)
有什么想法吗 试着用括号把条件分开
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
使用括号,因为对于php解释器来说,这跨越了多行
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } // else ?>
您可能忘记了以下内容的
endif
:
不可能在编写时省略大括号。只有在后面跟一个。使用大括号
{
和}
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
您最初的想法是正确的。有两种方法可以做到这一点,如下所示:
用户已登录
用户未登录
或:
用户已登录
用户未登录
PHP有两种if()块(和一般块)的表示法
首先,您有一个冗长的符号,它包括显式地声明endif代码>位于if()块的末尾。看起来是这样的:
if(whatever):
do something
else:
do something else
endif;
if(whatever) {
do something
} else {
do something else.
}
if
和else
行末尾的冒号很重要,因为否则PHP认为您使用的是另一种表示法(如下)
其次,您有花括号表示法,它看起来类似于C或Perl风格的代码,如下所示:
if(whatever):
do something
else:
do something else
endif;
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; ?>
或者
希望有帮助。另一种有条件地呈现模板的方法是使用include
范例
if($condition)
{
包括“page1.php”;
}否则{
包括“page2.php”;
}
+1使用end*
/:
方法在HTML.eurk中执行条件语句。我讨厌“endif”语法。任何时候都可以给我漂亮友好的卷发背带+1.这是唯一一种替代语法比使用大括号更具可读性的情况。
注意到我刚才遇到的一个恼人的错误-您必须使用i prefer大括号,尤其是在使用IDE时
if(whatever) {
do something
} else {
do something else.
}
<?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 } ?>