如果服务器缺少图像,请将图像添加到 foreach?

Add image to foreach if missing from server?

我有以下代码,我想要的是,如果该图像不在服务器文件中,则显示替代图像...

foreach ($result as $data) {
    echo' 
    <tr style="background-color:#690b06;"> 
    <td id"key" style="font-size:18px; color:#f0cb01;">'.$data["Product #"].'</td> 
    <td id"bl" style="font-size:18px;color:#f0cb01;"><a target="_blank" href="https://www.google.com/search?q='.$data["Name"].'">'.$data["Name"].'</td> 

    <td id"bl" style="font-size:18px;color:#f0cb01;">
    <img src="http://example.com/search/images/'.$data["Name"].'.jpg" width="75" height="100" class="image">           
    </td>

    <td id"ph" style="font-size:18px;color:#f0cb01;">'.$data["UPC"].'</td> 
    <td id"ph" style="font-size:18px;color:#f0cb01;">'.$data["Case Pack"].'</td> 
    <td id"ph" style="font-size:18px;color:#f0cb01;">'.$data["Item Ounces"].'</td> 
    <td id"reason" style="font-size:18px;color:#f0cb01;">'.$data["Suggested Retail"].'</td>';

}
echo "</tr></table>";

我的文件结构如下 /seach/images/"name of item.jpg"

物品的名称是从数据库中提取的,照片也是带有.jpg扩展名的名称。有些项目没有图像。它是我工作的搜索功能,我在其中搜索一个项目,结果 returns...如果可能的话,有些带有图片。但有些没有图像,只显示空占位符。

Use file_exists()

if(file_exists('/search/images/'.$data["Name"].'.jpg')) {
    echo '<img src="http://example.com/search/images/'.$data["Name"].'.jpg" width="75" height="100" class="image">'
} else {
    //echo out alt image
}

正如其他人指出的那样,您可以使用 PHP 函数 file_exists。但请注意,如果您谈论的是存储在其他服务器上的图像,即使文件不存在,file_exists 有时也会 return 得到肯定的结果。

一种解决方案是使用 getimagesize,例如:

$img_arr = @getimagesize($filename);

您将需要 @,因为如果文件不存在,getimagesize 将 return 出错。然后,您将测试 $img_arr 是否实际上是一个数组:

if (is_array($img_arr)) { ... }

getimagesize 将使用存储在远程服务器上的文件。

如果您的应用程序可以将 URL 映射到文件位置,事情就会变得更容易:

<?php

$url_root = 'http://example.com/search/images';
$doc_root = $_SERVER['DOCUMENT_ROOT'].'/search/images';
$default_image = 'http://example.com/images/default.jpg';

foreach ($result as $data) {

    $image_url = $default_image;

    if (file_exists( $doc_root.'/'.$data['Name'].'.jpg' )) {
        $image_url = $url_root.'/'.$data['Name'].'.jpg';
    }

    // output the image tag
    echo '<img src="'.$image_url.'" width="75" height="100" class="image" />';

}
?>