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
语句来使用速记符号,但它不起作用。 (在早期的项目中,:
方法适用于foreach
和endforeach
,所以我想我会尝试一下)
有什么想法吗?
【问题讨论】:
【参考方案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。这是唯一一种替代语法比使用大括号更具可读性的情况。
<display users profile in html>
请注意我刚刚遇到的一个烦人的错误 - 你必须使用<?php
标签。常用的<?
标签是不行的【参考方案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;
if
和 else
行末尾的冒号很重要,否则 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 代码中的条件语句的主要内容,如果未能解决你的问题,请参考以下文章