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

时间:2010-09-28 12:14:25

标签: php html conditional-statements

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

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

但这不起作用。我还尝试使用:if的末尾并使用endif语句来使用简写表示法,但它不起作用。 (在早期的项目中,:方法适用于foreachendforeach,所以我想我会尝试一下)

任何想法?

7 个答案:

答案 0 :(得分:61)

您可能忘记了alternative control structure syntaxendif

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

在你写的时候省略大括号是不可能的。只有后跟regular statement

才有可能

答案 1 :(得分:12)

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

希望有所帮助。

答案 2 :(得分:6)

使用大括号{}

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

答案 3 :(得分:1)

你最初的想法是正确的。根据{{​​3}}:

,有两种方法可以做到这一点
<?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 } ?>

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

使用括号因为PHP解释器跨越多行

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

答案 6 :(得分:0)

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

示例

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