PHP:是否有可能在三元运算符中间嵌入HTML?

3
例如,我能做类似以下的事情吗?
<? $foobar = 1;
$foobar==0 ? ?>
   <span>html goes here.</span>
<? : ?>
   <span>something else.</span>
<? ; ?>

那段代码不起作用。所以我猜想它是不可能的,或者它是可能的吗?


我认为这很棒。 :D - trusktr
2
我认为这会非常难以阅读。 - BoltClock
4个回答

8

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

使用if-else语句结构会更易读。花费额外的几个字符,你会得到一个更易于理解的代码块:

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

你也可以使用花括号语法,但我不喜欢在我的代码中看到漫无目的、未标记的 }


1
我建议使用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>';

1

我认为像这样使用三元运算符是没有意义的,我的意思是,你要花费6行代码来完成它,所以它不再紧凑。

我建议您将其重写为if/else语句。

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

最好的祝福。

希望有所帮助!


1

使用字符串的替代方案。

<?php

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

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

<p>Some other html</p>

不错的替代方案。 :) 我以前用过它来输出变量,但没想到可以这样使用。 - trusktr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接