Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP代码中的条件语句在HTML代码之间_Php_Html_Conditional Statements - Fatal编程技术网

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

在PHP中使用由HTML代码分隔的条件语句有点问题。这就是我试图编写的代码类型。这是一个配置文件页面,只有其配置文件所在的用户才能看到它(我使用会话变量进行检查):


但这不起作用。我还尝试使用速记法,在
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 } ?>