【问题标题】:PHP: Is it possible to embed HTML in the middle of a ternary operator somehow?PHP:是否有可能以某种方式将 HTML 嵌入到三元运算符的中间?
【发布时间】:2011-06-28 05:20:39
【问题描述】:

例如,我可以执行以下操作吗?

<? $foobar = 1;
$foobar==0 ? ?>
   <span>html goes here.</span>
<? : ?>
   <span>something else.</span>
<? ; ?>

该代码不起作用。所以我猜这是不可能的,或者是吗?

【问题讨论】:

  • 我认为它会很整洁。 :D
  • 我认为它非常难以阅读。

标签: php html ternary-operator embedded-language


【解决方案1】:

使用字符串的替代方法。

<?php

$x = 10;
?>
<p>Some html</p>

<?= $x == 10 ? '<p>true</p>' : '<p>false</p>' ?>

<p>Some other html</p>

【讨论】:

  • 不错的选择。 :) 我以前用它来输出变量,但没有像那样使用它。
【解决方案2】:

我认为像这样使用三元运算符是没有意义的,我的意思是,您为此花费了 6 行代码,因此不再紧凑。

我建议你将它重写为 if/else。

<? $foobar = 0;
if($foobar==0) { ?>
   <span>html goes here.</span>
<? } else { ?>
   <span>something else.</span>
<? } ?>

最好的问候。

HTH!

【讨论】:

    【解决方案3】:

    你不能像那样嵌入 HTML,因为你过早地终止了三元表达式,导致解析错误。

    另一种 if-else 结构更具可读性。对于额外的几个字符,您将获得更容易理解的代码块:

    <?php if ($foobar == 0) : ?>
        <span>html goes here.</span>
    <?php else: ?>
        <span>something else.</span>
    <?php endif; ?>
    

    您也可以使用花括号语法,但我不喜欢在我的代码周围看到杂散的、未标记的 }s。

    【讨论】:

      【解决方案4】:

      我建议使用switch

      例子

      <?php
      switch($foobar) {
          case 0:
               $html = '<span>html goes here.</span>';
          break;
      
          default:
          case 1:
               $html = '<span>something else.</span>';
          break;
      }
      
      echo $html;
      

      但是如果你仍然想用三元运算符来做,那么就这样做吧:

      echo $foobar == 0 ? '<span>html goes here.</span>' : '<span>something else.</span>';
      

      【讨论】:

        猜你喜欢
        • 2021-10-06
        • 1970-01-01
        • 2016-09-13
        • 2020-06-07
        • 2015-12-07
        • 2019-10-08
        • 2016-01-29
        • 1970-01-01
        • 2019-01-27
        相关资源
        最近更新 更多