3

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

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

那个代码行不通。所以我猜这是不可能的,或者是吗?

4

4 回答 4

7

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

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

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

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

于 2011-02-16T09:17:23.170 回答
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>';
于 2011-02-16T09:15:10.783 回答
1

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

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

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

最好的祝福。

于 2011-02-16T09:17:35.807 回答
0

替代使用字符串。

<?php

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

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

<p>Some other html</p>
于 2011-02-16T09:21:25.947 回答