1

我在 SQL 返回上有一个工作if/else 。如果它是空的,我会显示一个默认值。

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

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

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

失败了。

有人可以澄清为什么它失败了吗?

蒂亚

4

5 回答 5

9

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

<?php echo ($row['imagename']==='') ? "placeholder.png" : 
      htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>
于 2012-07-27T11:28:50.240 回答
6
<?php echo ($row['imagename']==='') ? "placeholder.png" : htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>

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

于 2012-07-27T11:30:46.080 回答
5

作为一种语言结构,echo不喜欢出现在?:表达式中。改为这样做:

echo true ? 'foo' : 'bar';
于 2012-07-27T11:30:29.983 回答
2

它失败了,因为它打算与表达式而不是语句一起使用。参考三​​元运算符下的php比较运算符

通过;在表达式的末尾加上 a,您就将它们变成了语句。

请参阅:表达式和语句以了解两者之间的区别。

于 2012-07-27T11:32:51.820 回答
1

print 和 echo 之间的一个区别是 print 有一个值,而 echo 没有。

构造:

$test ? planA : planB

选择值 planA 或 planB 之一,即使您无意使用结果。由于 echo 没有价值,所以它不起作用:

$test ? echo 'plan A' : echo 'plan B'; // <-- not working

如果您想使用这种简单的语法,只需将您的 echo 语句替换为 print 语句。

$test ? print 'plan A' : print 'plan B'; // <-- should work
于 2015-04-19T03:04:22.820 回答