我在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'); ?>
失败了。
有人可以澄清它失败的原因吗?
TIA
答案 0 :(得分:9)
删除分号并在开头添加echo
。
<?php echo ($row['imagename']==='') ? "placeholder.png" :
htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>
答案 1 :(得分:6)
<?php echo ($row['imagename']==='') ? "placeholder.png" : htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>
您正在使用三元运算符
答案 2 :(得分:5)
作为一种语言结构,echo
不喜欢使用?:
表达式。这样做:
echo true ? 'foo' : 'bar';
答案 3 :(得分:2)
它失败了,因为它意味着与表达式而不是语句一起使用。 请参阅三元运算符下的php comparison operators。
通过在表达式的末尾添加;
,您可以将它们变成语句。
请参阅:Expressions and statements以了解两者之间的区别。
答案 4 :(得分:1)
print和echo之间的一个区别是print有一个值,而echo没有。
构造:
$test ? planA : planB
选择其中一个值planA或planB,即使您不打算使用结果。由于echo没有价值,因此不起作用:
$test ? echo 'plan A' : echo 'plan B'; // <-- not working
如果你想使用这个简单的语法,只需用echo语句替换你的echo语句。
$test ? print 'plan A' : print 'plan B'; // <-- should work