PHP 代码中的条件语句 HTML 代码之间

2022-08-30 12:20:29

我在PHP中使用条件语句时遇到了一些问题,这些语句由HTML代码分隔。这就是我尝试编写的代码类型。这是一个配置文件页面,它应该只由其配置文件的用户看到(我正在使用会话变量进行检查):

<?php if(check if user is logged in) ?>
<display users profile in html>
<?php else ?>
<display an error>

但这行不通。我还尝试使用速记符号,在末尾加上 a 并使用语句,但它不起作用。(在早期的项目中,该方法有效,所以我想我会尝试一下):ifendif:foreachendforeach

任何想法?


答案 1

您可能忘记了替代控件结构语法endif

<?php if(check if user is logged in): ?>
<display users profile in html>
<?php else: ?>
<display an error>
<?php endif; ?>

在编写时省略大括号是不可能的。只有当它后面跟着一个常规语句时,才有可能。


答案 2

PHP 对 if() 块(和一般的块)有两种表示法样式。

首先,你有冗长的符号,它涉及在if()块的末尾明确说明。它看起来像这样:endif;

if(whatever):
   do something
else:
   do something else
endif;

和 行末尾的冒号很重要,因为否则 PHP 会认为你使用的是其他表示法(如下)。ifelse

其次,你有大括号表示法,它看起来类似于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 } ?>

希望有所帮助。


推荐