0

我需要从 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 glob 行的顺序,我会得到 x 倍于缩略图数量的链接。我希望我已经让自己理解了,我对此很陌生。
谢谢!

4

2 回答 2

3

您的两个叠瓦状 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++;
}
于 2009-11-27T18:01:20.830 回答
0

我想一种解决方案是将'glob'返回加载到一个数组中并以这种方式引用它:

<?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++;
}
?>
于 2009-11-27T18:00:56.090 回答