PHP将空白图像替换为默认图像


PHP replacing blank images with a default one

今天早上有一个大脑衰退的时刻。我有以下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逻辑:)