PHP:将if/else更改为一行条件失败.我想知道为什么

chr*_*ane 1 php conditional if-statement

我在SQL返回上有一个if/else工作.如果它为空我显示默认值.

<?php 
if($row['imagename']==='')
    {
        echo "placeholder.png";
    }
else 
    {
         echo htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8');
    } ?>
Run Code Online (Sandbox Code Playgroud)

我试着把它全部放在一条线上,即

<?php ($row['imagename']==='') ? echo "placeholder.png";:echo htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>
Run Code Online (Sandbox Code Playgroud)

哪个失败了.

有人可以澄清它失败的原因吗?

TIA

Yan*_*erk 9

删除分号并echo在开头添加.

<?php echo ($row['imagename']==='') ? "placeholder.png" : 
      htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>
Run Code Online (Sandbox Code Playgroud)


Cup*_*ups 6

<?php echo ($row['imagename']==='') ? "placeholder.png" : htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>
Run Code Online (Sandbox Code Playgroud)

您错误地使用了三元运算符


dec*_*eze 5

作为一种语言结构,echo不喜欢?:表达.改为:

echo true ? 'foo' : 'bar';
Run Code Online (Sandbox Code Playgroud)