繁体   English   中英

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

[英]Conditional Statements in PHP code Between HTML Code

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

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

但这不起作用。 我还尝试通过在if末尾放置一个:并使用endif语句来使用速记符号,但它没有用。 (在早期的项目中, :方法适用于foreachendforeach所以我想我会尝试一下)

有什么想法吗?

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

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

像你写的那样省略大括号是不可能的。 仅当其后跟有常规语句时才有可能。

PHP 有两种用于 if() 块(和一般块)的符号样式。

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

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

ifelse行末尾的冒号很重要,否则 PHP 会认为您正在使用其他符号(如下所示)。

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

希望有帮助。

使用大括号{}

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

有条件地呈现模板的另一种方法是使用include

示例

if($condition)
{
    include 'page1.php';
}else{
    include 'page2.php';
}

你最初的想法是正确的。 根据PHP 文档,有两种方法可以做到这一点:

<?php if($loggedin): ?> 
<p>User is logged in.</p>
<?php else: ?>
<p>User is not logged in.</p>
<?php endif; ?>

或者:

<?php if($loggedin){ ?> 
<p>User is logged in.</p>
<?php }else{ ?>
<p>User is not logged in.</p>
<?php } ?>

尝试放入括号以分隔条件。

<?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 ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM