PHP: возможно ли как-то встроить HTML в середину троичного оператора? - PullRequest
3 голосов
/ 16 февраля 2011

Например, я могу сделать что-то вроде следующего?

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

Этот код не будет работать.Так что я предполагаю, что это невозможно, или это так?

Ответы [ 4 ]

6 голосов
/ 16 февраля 2011

Вы не можете встраивать HTML таким образом, потому что преждевременно завершаете троичное выражение, вызывая ошибку разбора.

Альтернативная конструкция if-else гораздо более читабельна. За дополнительные несколько символов вы получите гораздо более понятный блок кода:

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

Вы также можете использовать синтаксис фигурных скобок, но мне не нравится видеть блуждающие, без метки } s вокруг моего кода.

1 голос
/ 16 февраля 2011

Я думаю, что бессмысленно использовать троичный оператор, как это, я имею в виду, что вы тратите 6 строк кода, чтобы сделать это, так что это уже не компактно.

Я бы порекомендовал вам переписать его так, как будто / else.

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

С уважением.

НТН!

1 голос
/ 16 февраля 2011

Я бы порекомендовал использовать 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>';
0 голосов
/ 16 февраля 2011

Альтернатива с использованием строк.

<?php

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

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

<p>Some other html</p>
...