如果其他嵌入HTML


Answers:


160

我建议使用以下语法以提高可读性。

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

请注意,省略php打开的标签确实需要short_open_tags在您的配置中将启用,这是默认设置。相关的无花括号括号条件句法始终处于启用状态,并且无论此指令如何均可使用。


4
本示例在语句中缺少“ PHP”。
亚当·杨格斯

3
@AdamYoungers这些被称为short_open_tags,尽管您可能不熟悉它们,但它们是完全有效的。
coreyward 2014年

4
我对他们不熟悉。我尝试使用上面的方法,但它破坏了我的页面。快速搜索,我看你有没有在php.ini文件中启用这个... stackoverflow.com/questions/2185320/...
亚当Youngers

5
我强烈建议不要使用php短标签。它可能会增加混乱,还可能导致随机错误,从而导致开发人员拔头发。
NateAGeek

2
@NateAGeek欢迎您不要使用它们,但是没有必要给出5岁以下的答案。
coreyward 2015年

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

22

在@Patrick McMahon的回复中,此处的第二条注释($ first_condition为false,$ second_condition为true)并不完全准确:

<?php if($first_condition): ?>
  /*$first_condition is true*/
  <div class="first-condition-true">First Condition is true</div>
<?php elseif($second_condition): ?>
  /*$first_condition is false and $second_condition is true*/
  <div class="second-condition-true">Second Condition is true</div>
<?php else: ?>
  /*$first_condition and $second_condition are false*/
  <div class="first-and-second-condition-false">Conditions are false</div>
<?php endif; ?>

ELSEIF火灾是否$ first_condition是真的还是假的,因为这样做额外的ELSEIF语句,如果有多个。

我不是PHP专家,所以我不知道这是说句话还是那句话的正确方法或者是否有另一种/更好的方法来用PHP编写代码,但这对于那些正在寻找的人来说是一个重要的区别。 OR条件与ELSE条件。

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


你确定吗?刚刚使用以下命令进行了测试:if(true){ echo 'here';} elseif (true){ echo 'second';} else { echo 'whaddup';}exit;输出:“ here”在PHP 5.5上
Philipp

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

1

您会发现人们使用多种不同的方法,并且每个人都有自己的位置。

<?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(通常可以在line 141默认php.ini文件中找到该属性),则可以将php open标签从替换<?php<?不建议这样做,因为大多数实时服务器环境都已将其关闭(包括许多CMS,如Drupal,WordPress和Joomla)。我已经在Drupal中测试了短手开放标签,并确认它将破坏您的网站,所以请坚持使用<?phpshort_open_tag默认情况下,不是在所有服务器配置中都处于“开”状态,并且在开发未知服务器配置时不得假定为“开”。许多托管公司已short_open_tag关闭。

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

在某些服务器环境和应用程序中,即使将short_open_tag设置为,简短的php open标签仍将使您的代码崩溃true

short_open_tag 将在PHP6中删除,因此请勿使用简写标记。

所有未来的PHP版本将被删除 short_open_tag

“几年来,建议您不要使用快捷标签“ short cut”,而应使用完整标签组合。随着XML的广泛使用以及其他语言对这些标签的使用,服务器很容易造成混乱和混乱。最终会在错误的上下文中解析错误的代码。但是由于这种快捷方式已经存在了很长时间了,因此目前仍支持向后兼容,但我们建议您不要使用它们。” – Jelmer 2012年9月25日9:00 php:“ short_open_tag = On”不起作用

通常,您是这样编写PHP的:但是,如果 启用allow_short_tags指令,则可以使用:。此外,sort标签还提供了额外的语法:等于。

短标签似乎很酷,但事实并非如此。它们只会引起更多问题。哦...还有IIRC,它们将从PHP6中删除。Crozin在2010年8月24日22:12回答了 php short_open_tag问题

为了回答其中的一部分,我引用了Zend PHP 5认证指南:“短时间标签曾经是PHP世界中的标准;但是,它们确实具有与XML标头冲突的主要缺点,因此,有点落在路边。” – Fluffy 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代码中没有嵌入标签,则可以使用方括号格式。

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

<?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老板将关心代码的易读性,而大学教授则对易读性进行评分。

更新

基于黄昏的评论,尚不清楚是否不鼓励使用速记方式(根据php标准)。当我获得更多信息时,我将更新此答案。但是基于网上发现的许多关于速记不利于便携性的文档。我个人仍然不会使用它,因为它没有任何优势,您必须依靠每个Web主机都不使用的设置。


1
“在PHP6中”?PHP 6不存在,也永远不会存在。下一个主要版本是PHP 7,预计不会更改short_open_tags的状态。
duskwuff -inactive

@duskwuff您可能对它们跳转到PHP7和跳过PHP6是正确的。但是他们考虑在PHP5中不鼓励使用short_open_tags,因此将不推荐使用。
Patrick W. McMahon 2015年

2
您从何处得知它们“被淘汰”或“将被弃用”?该文档绝对没有任何建议。php.net/manual/en/ini.core.php#ini.short-open-tag
duskwuff -inactive-

@duskwuff我只是参考其他人已经说过的文件。参见例如stackoverflow.com/questions/22554753/…以及关于便携式性的说法,以及如何不能假设每个服务器都已开启,我不是不正确的,网络上的每个人都在说不要使用简而言之,我必须支持提供的数字。许多人只是简单地说不要使用它们,而是先使用它们。以及使用它们没有优势。
Patrick W. McMahon 2015年

1
@ PatrickW.McMahon您尚未提供任何电话号码。您正在链接到几乎不是一个授权的单个StackOverflow答案,并将其扩展到“网络上的每个人”。控制。
coreyward
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.