如果其他embeddedHTML

什么是正确的方式embedded如果else和elseif条件内的HTML?

看到这个和它的替代品 ,如果embedded到html块中,它往往更易读。

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

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

请注意,在开放标签上省略php要求在您的configuration中启用short_open_tags , 这是默认值 。 相关的无花括号条件语法始终处于启用状态,无论此指令如何都可以使用。

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

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

我看到这是一个老问题/答案,但它在Bingsearch中排名很高,所以我不得不为这些在这里登陆的PHP迷惑的人添加这个评论。

在@帕特里克·麦克马洪的回应中,这里的第二个评论( $ first_condition是false ,$ 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是true还是false,如果有多个elseif语句,则会触发elseif

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

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

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

 <?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 141find),那么你可以将你的php开放标签replace为<?php to <?这是不build议的,因为大多数现场服务器环境closures(包括许多CMS,如Drupal,WordPress和Joomla)。 我已经在Drupal中testing了短手开放标签,并确认它会打破你的网站,所以坚持<?php 。 在所有服务器configuration中, short_open_tag默认情况下都不会打开,因此在为未知的服务器configuration开发时不能这样假设。 许多托pipe公司都closures了short_open_tag

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

在一些服务器环境和应用程序中,即使将short_open_tag设置为true ,短手动PHP打开标记仍然会使代码崩溃。

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

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

“推荐几年,你不使用短标签”捷径“,而是使用全标签组合。随着XML的广泛使用和其他语言使用这些标签,服务器可能变得容易混淆,最后在错误的上下文中parsing了错误的代码,但是由于这个捷径已经成为很长一段时间的function,所以目前仍然支持向后兼容,但我们build议您不要使用它们。 – – 杰尔默9月25日在9:00 php:“short_open_tag =上”不工作

通常你写如下PHP:。 但是,如果启用allow_short_tags指令,则可以使用:。 sorting标签也提供了额外的语法:等于。

短标签可能看起来很酷,但他们不是。 他们只会导致更多的问题。 哦…和IIRC他们将被从PHP6中删除。 Crozin回答08年8月24日在22:12 php short_open_tag问题

为了回答为什么部分,我引用了Zend PHP 5authentication指南:“短期标签一度是PHP世界的标准,但是它们确实存在与XML标题冲突的主要缺点,因此,有些倒在路边。“ – 蓬松2011年4月13日在14:40 PHP短标签可以接受使用?

你也可以看到人们使用下面的例子:

 <?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代码没有embedded标签,那么您可以使用括号格式。

以下示例显示何时使用括号方法

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

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

UPDATE

根据duskwuff的评论,如果不遵守php标准,速记还不清楚。 我会更新这个答案,因为我得到更多的信息。 但基于在网上发现的许多文件关于速记不好的便携性。 我个人还是不会使用它,因为它没有任何优势,而且你必须依赖于每个虚拟主机都没有的设置。

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