0xf*_*000 31 html php conditional-statements
我在PHP中使用由HTML代码分隔的条件语句时遇到了一些问题.这是我正在尝试编写的代码类型.这是一个配置文件页面,它只应由其配置文件的用户看到(我正在使用会话变量进行检查):
<?php if(check if user is logged in) ?>
<display users profile in html>
<?php else ?>
<display an error>
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我也尝试使用简写符号,:在结尾if使用endif语句,但它没有用.(在早期的项目中,该:方法有效foreach,endforeach所以我想我会尝试一下)
有任何想法吗 ?
Gum*_*mbo 67
你可能忘了endif的的替代控制结构的语法:
<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)
在你写的时候省略括号是不可能的.只有遵循常规声明才有可能.
Spu*_*ley 13
PHP有两种表示形式的if()块(和一般的块).
首先,你有罗嗦的符号,它涉及明确地说明endif;if()块的结尾.它看起来像这样:
if(whatever):
do something
else:
do something else
endif;
Run Code Online (Sandbox Code Playgroud)
if和else行末尾的冒号很重要,因为否则PHP认为你正在使用其他符号(下面).
其次,你有大括号表示法,看起来类似于C或Perl样式代码,看起来像这样:
if(whatever) {
do something
} else {
do something else.
}
Run Code Online (Sandbox Code Playgroud)
使用这种样式表示法,如果你的块只有一行,你就可以将这对花括号留下.(我个人认为这样做是不好的做法,但很多人都发誓,这是非常有效的语法.但是当你在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; ?>
Run Code Online (Sandbox Code Playgroud)
要么...
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
使用牙箍{和}.
<?php if(check if user is logged in) { ?>
<display users profile in html>
<?php } else { ?>
<display an error>
<?php } ?>
Run Code Online (Sandbox Code Playgroud)