2015-12-05 48 views
2

所以,我試圖爲我正在創建的網站構建幻燈片,但尚不清楚我將包含多少圖片。用於檢索圖像當前的代碼如下包括在內,但運行時只顯示:PHP for循環與HTML內部不能正常工作

output from code

<?php 
       $dir = dirname(__FILE__).'/img'; 
       $images = scandir($dir); 
       if($images) 
       { 
        foreach($images as $image) 
        {?> 
         <div class="slide active-slide slide-feature"> 
          <div class="container"> 
           <div class="row"> 
            <div class="col-xs-12"> 
             <a href="#"><img src= <?php echo ('"' . $dir . '/' . $image . '"') ?> ></a> 
            </div> 
           </div> 
          </div> 
         </div> 
      <?php 
        } 
       } 
      ?> 

注意:當我剛剛手工鍵入HTML和包括具體的網址,在HTML本身工作正常,所以我認爲這是整合HTML和PHP的問題。

回答

0

$dir = dirname(__FILE__).'/img';

在此背景下,$dir是絕對文件系統路徑,而不是URL。因此,當您在img元素的src屬性中使用$dir時,圖像永遠不會被找到。您可以通過簡單地使相對URL(雖然相對於根的URL將是可取的),例如可能解決這個問題:

<a href="#"><img src="img/<?=$image?>"></a> 

你也應該注意到,scandir()功能也將返回兩個「特殊」目錄...,所以在你的foreach()循環開始時需要跳過這些。例如:

if (in_array($image,array('.','..'))) continue; 

混合輸出內PHP構建以這種方式(通過破壞/了PHP模式)是不好的做法,因爲它限制了便攜性,更難讀,更難相反調試等,考慮將你的輸出分配給一個變量,並在腳本結尾回顯這個變量。

+0

好的。謝謝您的幫助。後續問題: 我的幻燈片現在大部分功能正常,但我的Javascript功能與以前聲明的圖像數量(沒有PHP)功能不再完全正常。它的設置是當它在最後一個項目上並且你擊中下一個箭頭時,它會回到第一個箭頭。幻燈片可以在這裏找到(http://www.zacharyamason.com/slideshow.php)和JS可以找到[這裏](http://www.zacharyamason.com/js/slideshow-app.js ) – user3213722