我有一个正在处理的if/elseSQL返回。如果它是空的,我会显示一个默认值。
<?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
删除分号并在开头添加echo
。
<?php echo ($row['imagename']==='') ? "placeholder.png" :
htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>
<?php echo ($row['imagename']==='') ? "placeholder.png" : htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>
您错误地使用了三元运算符
作为一种语言构造,echo
不喜欢出现在?:
表达式中。改为:
echo true ? 'foo' : 'bar';
它之所以失败,是因为它用于表达式而非语句。请参阅三元运算符下的php比较运算符。
在表达式的末尾加上;
,就可以把它们变成语句。
请参阅:表达式和语句来理解两者之间的区别。
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