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

Posted

技术标签:

【中文标题】HTML 代码之间的 PHP 代码中的条件语句【英文标题】:Conditional Statements in PHP code Between HTML Code 【发布时间】:2011-04-18 06:31:30 【问题描述】:

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

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

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

尝试用括号分隔条件。

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

【讨论】:

【参考方案2】:

使用括号,因为对于 php 解释器来说,这跨越了多行

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

【讨论】:

【参考方案3】:

您可能忘记了alternative control structure syntax 中的endif

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

不可能像你写的那样省略大括号。只有在其后跟 regular statement 时才有可能。

【讨论】:

+1 用于使用end* / : 方法在 HTML 中执行条件。 好样的。我讨厌“endif”语法。随时给我漂亮友好的花括号。 ;) +1。这是唯一一种替代语法比使用大括号更具可读性的情况。 &lt;display users profile in html&gt; 请注意我刚刚遇到的一个烦人的错误 - 你必须使用&lt;?php 标签。常用的&lt;? 标签是不行的【参考方案4】:

使用大括号

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

【讨论】:

我更喜欢大括号,尤其是当您使用 IDE 时【参考方案5】:

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

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

【讨论】:

【参考方案6】:

PHP 对 if() 块(以及一般的块)有两种表示法。

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

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

希望对您有所帮助。

【讨论】:

【参考方案7】:

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

例子

if($condition)

    include 'page1.php';
else
    include 'page2.php';

【讨论】:

以上是关于HTML 代码之间的 PHP 代码中的条件语句的主要内容,如果未能解决你的问题,请参考以下文章

Python------条件语句及基本数据类型

python条件语句实例代码

PHP 结构语句

PHP while 循环

php学习笔记--基础2

PHP流程控制 - if 语句