2015-08-21 48 views
0

所以我有一組20個圖像,全部標記爲狗。所以dog01,dog02,dog03等等。我使用這段代碼將這些代碼從目錄中拉出來,並將它們顯示爲5行,像這樣4行。按序列加載目錄中的圖像,加載填充圖像代替丟失圖像

dog01 dog02 dog03 dog04 dog05 
dog06 dog07 dog08 dog09 dog10 (etc.) 

我「米使用此代碼從一個目錄中加載圖像,並加載它們的順序。

<?php 
$dirname = "images/"; 
$images = glob($dirname."dog*.png"); 
foreach ($images as $i=>$image) { 
$title = pathinfo($image); 
echo '<img class="deck" src="'.$image.'" alt="'. $title['filename'].'" title="'.$title['filename'].'">'; 
if(($i+1)%5 == 0) echo '<br />'; 
} 
?> 

不過,我想看看是否有一種方式來獲得它。因此,如果狗的一個從目錄中缺少,它不是加載在其位的填充物,並繼續加載其他依次所以,如果dog03丟失,它應該是這樣的:

dog01 dog02 filler dog04 dog05 

它會顯示填充,並繼續按順序進行。我真的不確定我是否可以在php中實現這一點。如果有人知道我需要採取什麼方法,那將不勝感激。我應該注意填充圖像位於另一個名爲「fillers /」的目錄中。

在此先感謝。

回答

2

你有兩種方法可以解決這個問題。首先是不用擔心它在PHP中,並加載填充圖像作爲背景圖像。通常,圖像將被加載到填充圖像上,但如果圖像未加載,填充圖像將保持可見。

另一種方式是通過測試文件是否存在。

作爲背景圖片:

.deck { 
    //whatever you had here 
    background-image: url("/filler/filler.png"); 
} 

您可能需要做出div容器周圍的圖像,並把CSS上代替。請注意,如果未設置明確的寬度或高度,則這將不起作用,因爲背景圖像不會爲其所連接的元素指定任何寬度或高度。

通過先測試:

<?php 
$dirname = "images/"; 
$images = glob($dirname."dog*.png"); 
foreach ($images as $i=>$image) { 
    if(file_exists($image)) { 
    $title = pathinfo($image); 
    echo '<img class="deck" src="'.$image.'" alt="'. $title['filename'].'" title="'.$title['filename'].'">'; 
    } else { 
    echo '<img class="deck filler" src="/filler/filler.png" alt="This image does not exist." title="This image does not exist.">'; 
    } 
    if(($i+1)%5 == 0) echo '<br />'; 
} 
?> 

如果您在安全模式下運行PHP這種方法可能無法正常工作。