今天早上有一个大脑衰退的时刻。我有以下php:
$imgset = $result->fields[6];
if ($imgset = '')
{
$imgset = 'logo';
}
else
{
$imgset = $result->fields[6];
}
echo '<img id="imgdisp" src="/img/'.$imgset.'.jpg" />';
$imgset = '';
它在哪里查看数据库中的结果是否为空,如果是,应该放在logo.jpg中,而不是放在结果中。但出于某种原因,它不想工作,我可能完全失明了,但看不出为什么不这样做。我仍然在HTML中得到空白图像/img/.jpg";就好像$imgset仍在通过一个空白。SQL中的值也不是NULL,它们绝对是从其他地方的表单中使用_POST从输入框输入的空白条目。
这:
if ($imgset = '') {
始终将$imgset
设置为空。改为使用比较:
if ($imgset == '') {
您的else也不需要,因为在这种情况下$imgset
已经设置为$result->fields[6];
。
尝试验证图像是否也存在于中
<?php
$imgset = $result->fields[6];
if ($imgset) {
$imgset = $result->fields[6];
$path ='pathtoimages';
if(!file_exists($path.'/'.$imageset.'.jpg'){
$imgset = 'logo';
}
}
else
{
$imgset = 'logo';
}
echo '<img id="imgdisp" src="/img/'.$imgset.'.jpg" />';
?>
您忘记了对if条件进行比较,而是为$imgset分配了一个空值。if ($imgset = '')
应为if ($imgset == '')
$imgset = $result->fields[6];
if ($imgset == '')
{
$imgset = 'logo';
}
echo '<img id="imgdisp" src="/img/'.$imgset.'.jpg" />';
$imgset = '';
您不需要else部分,因为值已经在第一个语句中分配。
使用三元运算符可以这样做:
echo '<img id="imgdisp" src="/img/'.(empty($imgset)?'logo':$imgset).'.jpg" />';
以可读性为代价缩短代码。
这就是为什么最好反转条件的原因:
if ('' = $imgset)
会导致错误。
答案:
if ('' == $imgset)
//or
if (empty($imgset))
如果您从MYSQL中进行选择,您可以使用类似的东西
SELECT *,COALESCE(image,"logo") AS image FROM ....
这样,当结果返回并且某些行的图像为NULL时,它将被"徽标"取代,因此您不需要PHP中的IF逻辑:)