Bir klasör oldukça doğru çalışmıyor görüntüleri yüklemek için PHP foreach glob

2 Cevap php

I need to load images from 2 different folders, each thumbnail has its associated large version (same name, different folder).
I have 3 files in the large pics folder and 3 files in the thumbs folder and I'm getting 9 links! Each thumbnail gets repeated 3 times or x times the quantity of pics in the main folder

Bu kodu:

<?php
foreach (glob("images/*.jpg") as $large) 
foreach (glob("images/thumbs/*.jpg") as $thumb)
{
echo ("<div class='thumbnail'><a href='$large'><img src='$thumb'/></a></div>");
}
?>

If I reverse the order of the foreach glob lines I get links x times the quantity of thumbnails. I hope I've made myself understood, I'm new to this.
Thanks!

2 Cevap

Sizin iki dilimli bir foreach aslında demek:

  • 3 görüntülerin her biri için değil thumbs
  • thumbs içinde 3 görüntülerin üzerinde döngü

Yani, 9 toplam iterations :-)


If you want to loop over the images not in thumbs, you only need the first one.
If you only want to loop over the images in thumbs, you only need the second one.


If you want all images : large+thumb at the same time, and if large images have the same name as thumbs, you only need one loop to get the names of the files.

Eğer bu ismi varsa Ve, size istediğiniz görüntü bağlı olarak, "images/thumbs/" veya "images/" ile Önlerine.

Test, ama bu böyle bir şey yardımcı olabilir Not:

$counter = 0; 
foreach (glob("images/thumbs/*.jpg") as $pathToThumb)
{
    $filename = basename($pathToThumb);
    $pathToLarge = 'images/' . $filename;
    echo ("<div class='thumbnail'><a href='$pathToLarge'><img src='$pathToThumb'/></a></div>");
    $counter++;
}

Ben bir çözüm sadece bir diziye 'topak' dönüşünü yüklemek ve bu şekilde referans olacağını varsayalım:

<?php
$largeArray = glob("images/*.jpg");
$counter = 0; 
foreach (glob("images/thumbs/*.jpg") as $thumb)
{
echo ("<div class='thumbnail'><a href='$largeArray[$counter]'><img src='$thumb'/></a></div>");
$counter++;
}
?>