2011-01-19 101 views
50

什么是正确的方式嵌入如果else和elseif条件内的HTML?如果其他嵌入HTML

+0

你确定你的意思不是相反吗? – 2011-01-19 04:43:32

回答

14

参见this及其alternate,这趋于如果嵌入的HTML块内是更具有可读性。

121

为了方便阅读,我推荐使用以下语法。

<? if ($condition): ?> 
    <p>Content</p> 
<? elseif ($other_condition): ?> 
    <p>Other Content</p> 
<? else: ?> 
    <p>Default Content</p> 
<? endif; ?> 

注意,在打开的标签省略php确实要求short_open_tags您的配置中,which is the default启用。相关的无花括号条件语法始终处于启用状态,无论此指令如何都可以使用。

+3

该示例在语句中缺少'PHP'。 – 2014-10-31 17:46:45

+3

@AdamYoungers这些被称为short_open_tags,虽然你可能不熟悉它们,但它们是完全有效的。 – coreyward 2014-10-31 19:06:57

+3

我并不熟悉它们。我尝试过使用上面的代码,结果破坏了我的页面。快速搜索,我看到你必须在您的php.ini文件启用此... http://stackoverflow.com/questions/2185320/how-to-enable-php-short-tags – 2014-10-31 19:20:10

28
<?php if ($foo) { ?> 
    <div class="mydiv">Condition is true</div> 
<?php } else { ?> 
    <div class="myotherdiv">Condition is false</div> 
<?php } ?> 
0

你会发现人们使用多种不同的方法,他们都有自己的地方。

<?php if($first_condition): ?> 
    /*$first_condition is true*/ 
<?php elseif ($second_condition): ?> 
    /*$first_condition is false and $second_condition is true*/ 
<?php else: ?> 
    /*$first_condition and $second_condition are false*/ 
<?php endif; ?> 

如果在php.ini属性short_open_tag = true(这是在默认的php.ini文件line 141通常发现的),你可以取代你的php开放标签从<?php<?这不建议,因为大多数现场服务器环境都已关闭(包括许多CMS,如Drupal,WordPress和Joomla)。我已经在Drupal中测试了短手开放标签并确认它会破坏您的网站,所以坚持使用<?phpshort_open_tag默认情况下在所有服务器配置中都不处于开启状态,因此在为未知服务器配置开发时不得假定为这样。许多托管公司已将short_open_tag关闭。

快速搜索stackExchange中的short_open_tag显示830个结果。 https://stackoverflow.com/search?q=short_open_tag 这是很多人有问题,他们不应该玩的东西。

在某些服务器环境和应用程序中,即使将short_open_tag设置为true,短手php开放标记仍然会使您的代码崩溃。

short_open_tag将被删除在PHP6中,所以不要使用短手标记。

所有未来的PHP版本将下探short_open_tag

“这是被推荐了好几年,你不使用短 标签” 捷径“而是使用全标签 的组合。随着广泛使用XML以及 其他语言对这些标记的使用,服务器可能会变得很容易混淆,并最终在错误的上下文中解析错误的代码 。但是由于这个短暂的 被削减已经是这么长时间的功能,目前仍支持 向后兼容,但我们建议您不要使用 它们。“ - Jelmer月25 '12 9:00 php: "short_open_tag = On" not working

通常你编写PHP像这样:但是,如果 allow_short_tags指令启用你能使用。 。此外排序标签提供了额外的语法:这 等于

短标签看起来很酷,但他们不是,他们只会导致更多的问题 哦......和IIRC他们会b ... e从PHP6中删除。 Crozin回答8月24日'10 22:12 php short_open_tag problem

要回答为什么部分,我想引用的Zend PHP 5认证指南: “短标签是,对于这是PHP世界的标准;但是,它们确实存在与XML标题相冲突的主要缺陷,因此,它们在某种程度上已经有所下降了。“ - 蓬松4月13日'11 在14:40 Are PHP short tags acceptable to use?

您还可以看到人们使用下面的例子:

<?php if($first_condition){ ?> 
    /*$first_condition is true*/ 
<?php }else if ($second_condition){ ?> 
    /*$first_condition is false and $second_condition is true*/ 
<?php }else{ ?> 
    /*$first_condition and $second_condition are false*/ 
<?php } ?> 

这会工作,但它是建立,因为它是不被视为高度皱起眉头清晰的,而不是你会使用这种格式。如果您有一个PHP文件,其中有一段PHP代码没有嵌入标签,那么您可以使用括号格式。

下面的示例演示时使用的支架方法

<?php 
if($first_condition){ 
    /*$first_condition is true*/ 
}else if ($second_condition){ 
    /*$first_condition is false and $second_condition is true*/ 
}else{ 
    /*$first_condition and $second_condition are false*/ 
} 
?> 

如果你正在做这个代码为自己,你可以做你喜欢的,但如果你有一个团队工作,在工作时,建议为正确的情况使用正确的格式。如果您在嵌入式html/php脚本中使用括号是一种很好的解决方法,因为没有人会希望在您之后清理代码。 IT老板会关心代码的易读性和大学教授的易读性等级。

UPDATE

基于从duskwuff其还不清楚意见,如果速记气馁(由PHP标准)或没有。随着我获得更多信息,我会更新这个答案。但是基于网上发现的许多文件,关于速记对便携性不利。我个人还是不会使用它,因为它没有任何优势,你必须依靠一个不在每个虚拟主机上的设置。

7

编辑:我正在寻找@帕特里克的答案,但显然StackOverflow认为我的声誉不够好。我觉得这是一个重要的说明,因为登陆这里的人正在这样学习。如果因为它不回答问题而被删除,那就这样吧。如果帕特里克可能会更正他的答案,那么删除这不会造成任何损害

我看到这是一个老问题/答案,但它在Bing搜索中排名很高,所以我不得不为这些PHP混淆的灵魂在这里着陆添加此评论。

在@Patrick麦克马洪的回应,这里的第二个评论($ first_condition是假和$ second_condition是真的)并不完全准确:

<?php if($first_condition): ?> 
    /*$first_condition is true*/ 
<?php elseif ($second_condition): ?> 
    /*$first_condition is false and $second_condition is true*/ 
<?php else: ?> 
    /*$first_condition and $second_condition are false*/ 
<?php endif; ?> 

ELSEIF火灾是否$ first_condition是真的还是假的,如果有多个,那么额外的elseif报表。

我不是PHP的专家,所以我不知道这是否是说正确方式,如果这样或那样的事,那或者如果有另一个/更好的方式来在PHP代码中,但这将对那些寻找OR条件与ELSE条件的人来说是一个重要的区别。

来源是w3schools.com和我自己的经验。

0
<?php if (date("H") < "12" && date("H")>"6") { ?> 
    src="<?php bloginfo('template_url'); ?>/images/img/morning.gif" 
<?php } elseif (date("H") > "12" && date("H")<"17") { ?> 
src="<?php bloginfo('template_url'); ?>/images/img/noon.gif" 
    <?php } elseif (date("H") > "17" && date("H")<"21") { ?> 
    src="<?php bloginfo('template_url'); ?>/images/img/evening.gif" 
    <?php } elseif (date("H") > "21" && date("H")<"24") { ?> 
    src="<?php bloginfo('template_url'); ?>/images/img/night.gif" 
    <?php }else { ?> 
    src="<?php bloginfo('template_url'); ?>/images/img/mid_night.gif" 
    <?php } ?>