例如,我可以执行以下操作吗?
<? $foobar = 1;
$foobar==0 ? ?>
<span>html goes here.</span>
<? : ?>
<span>something else.</span>
<? ; ?>
该代码不起作用。所以我猜这是不可能的,或者是吗?
您不能像这样嵌入 HTML,因为您过早地终止三元表达式,从而导致解析错误。
替代的 if-else 结构更具可读性。对于额外的几个字符,您将获得更容易理解的代码块:
<?php if ($foobar == 0) : ?>
<span>html goes here.</span>
<?php else: ?>
<span>something else.</span>
<?php endif; ?>
您也可以使用大括号语法,但我不喜欢在我的代码周围看到杂散的、未标记的
}
。
使用字符串替代。
<?php
$x = 10;
?>
<p>Some html</p>
<?= $x == 10 ? '<p>true</p>' : '<p>false</p>' ?>
<p>Some other html</p>
我建议使用
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>';
我认为这样使用三元运算符是没有意义的。我的意思是,您需要花费 6 行代码来完成此操作,因此不再紧凑。
我建议您将其重写为 if/else。
<? $foobar = 0;
if($foobar==0) { ?>
<span>html goes here.</span>
<? } else { ?>
<span>something else.</span>
<? } ?>