PHP foreach glob从一个不正常工作的文件夹加载图像

时间:2009-11-27 17:55:50

标签: php foreach glob

我需要从2个不同的文件夹中加载图像,每个缩略图都有相关的大版本(同名,不同的文件夹) 我在大图片文件夹中有3个文件,在thumb文件夹中有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倍。我希望自己能够理解,我是新手 谢谢!

2 个答案:

答案 0 :(得分:3)

你的两个重叠的foreach实际上意味着:

  • 对于thumbs
  • 以外的3张图片中的每张图片
  • 遍历thumbs
  • 中的3张图片

所以,总共9次迭代: - )


如果您想要不是用拇指环绕图像,则只需要第一个。
如果你只想用拇指环绕图像,你只需要第二个。


如果你想要所有的图像:同时使用大+拇指,如果大图像与拇指同名,你只需要一个循环来获取文件的名称。

如果您拥有该名称,则会在其前面添加“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++;
}

答案 1 :(得分: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++;
}
?>