PHP foreach glob для загрузки изображений из папки не работает совершенно правильно - PullRequest
0 голосов
/ 27 ноября 2009

Мне нужно загрузить изображения из 2 разных папок, каждая миниатюра имеет связанную большую версию (то же имя, разные папки). У меня есть 3 файла в большой папке с фотографиями и 3 файла в папке с большими пальцами, и я получаю 9 ссылок! Каждое миниатюра повторяется 3 или x раз количество фотографий в главной папке

Это код:

<?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>");
}
?>  

Если я переверну порядок строк глобуса foreach, я получу ссылки, умноженные на количество миниатюр. Надеюсь, я понял себя, я новичок в этом.
Спасибо!

Ответы [ 2 ]

3 голосов
/ 27 ноября 2009

Ваши два обреченных foreach на самом деле означают:

  • для каждого из 3 изображений, не входящих в thumbs
  • цикл по 3 изображениям в thumbs

Итак, всего 9 итераций: -)


Если вы хотите зациклить изображения не большими пальцами, вам нужно только первое.
Если вы хотите зациклить изображения большими пальцами, вам нужен только второй.


Если вам нужны все изображения: large + thumb одновременно, и если большие изображения имеют то же имя, что и thumbs, вам нужен только один цикл для получения имен файлов.

И когда у вас есть это имя, вы добавляете его к «images/thumbs/» или «images/», в зависимости от того, какое изображение вы хотите.

Не проверено, но что-то подобное может помочь:

$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++;
}
0 голосов
/ 27 ноября 2009

Полагаю, одним из решений было бы просто загрузить 'glob' return в массив и ссылаться на него следующим образом:

<?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++;
}
?>
...