PHP:是否可以以某种方式将 HTML 嵌入到三元运算符中间?

问题描述 投票:0回答:4

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

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

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

php html ternary-operator embedded-language
4个回答
8
投票

您不能像这样嵌入 HTML,因为您过早地终止三元表达式,从而导致解析错误。

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

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

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

}


1
投票

使用字符串替代。

<?php

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

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

<p>Some other html</p>

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>
<? } ?>
© www.soinside.com 2019 - 2024. All rights reserved.