2013-02-06 46 views
0

我有以下代碼:兩個SCANDIR陣列陣列需要2個不同的變量,在foreach PHP

$path=$_SERVER['DOCUMENT_ROOT'] . "/WOWSlider/data1/images"; 

    $files= array_diff(scandir($path), array('..',".")); 

    $path2=$_SERVER['DOCUMENT_ROOT'] . "/WOWSlider/data1/images/thumbs"; 

    $files2= array_diff(scandir($path2), array('..',".")); 

foreach($files as $plaatje){ 

    print(" 

    <a href='WOWSlider/data1/images/$plaatje' class='highslide' onclick='return hs.expand(this)'> 
     <img src='WOWSlider/data1/images/thumbs/$thumbnail' alt='Highslide JS' 
      title='Click to enlarge' /></a> 

    <div class='highslide-caption'> 
     $plaatje 
    </div> 

    "); 


} 

現在我需要這樣的:

 $path=$_SERVER['DOCUMENT_ROOT'] . "/WOWSlider/data1/images"; 

     $files= array_diff(scandir($path), array('..',".")); 

     $path2=$_SERVER['DOCUMENT_ROOT'] . "/WOWSlider/data1/images/thumbs"; 

     $files2= array_diff(scandir($path2), array('..',".")); 

    foreach($files as $plaatje){ 
foreach($files2 as $thumbnail){ 

     print(" 

     <a href='WOWSlider/data1/images/$plaatje' class='highslide' onclick='return hs.expand(this)'> 
      <img src='WOWSlider/data1/images/thumbs/$thumbnail' alt='Highslide JS' 
       title='Click to enlarge' /></a> 

     <div class='highslide-caption'> 
      $plaatje 
     </div> 

     "); 


    } 
} 

但它不工作。 它不會在屏幕上打印任何內容。

有人知道該怎麼辦嗎?

我想製作一種相冊。 $ plaatjes是照片的和$縮略圖是照片的縮略圖。

而且由於縮略圖具有不同的文件名,我需要在foreach中有一個不同的變量,因此也在print()中。

我不想讓文件名有所不同,因爲如果我需要添加其他照片,我不必在代碼中執行某些操作。

回答

0

除非文件名彼此相關,例如,

kittens.jpg -> kittens_thumb.jpg 

其中多餘的東西(_thumb)是恆定的,沒有什麼可以以自動的方式這樣做。您必須手動構建將圖像與其縮略圖相關聯的列表。一旦你有了這個數組,那麼你可以使用一個簡單的foreach()。

隨着「相關」的文件名,你可以這樣做:

foreach($files as $file) { 
    $base = pathinfo($file, PATHINFO_BASENAME); 
    $ext = pathinfo($file, PATHINFO_EXTENSION); 
    echo "real file: $base.$ext"; 
    echo "thumb nail: {$base}_thumb.$ext"; 
} 
+0

他們都沒有關係,我不希望他們。 – Vaarkamp

+0

然後咬緊牙關,建立一個確實關聯它們的數組。 –

+0

嗯,我不喜歡鐵... – Vaarkamp