【问题标题】:PHP foreach glob to load images from a folder not working quite rightPHP foreach glob 从工作不正常的文件夹中加载图像
【发布时间】:2009-11-27 17:55:50
【问题描述】:

我需要从 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 倍于缩略图数量的链接。我希望我已经让自己理解了,我是新手。
谢谢!

【问题讨论】:

    标签: php foreach glob


    【解决方案1】:

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

    • 对于不在thumbs 中的 3 张图片中的每一张
    • 遍历thumbs中的3张图片

    所以,总共 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++;
    }
    

    【讨论】:

    • 哎呀,我发布了问题,去喝咖啡,当我回来时,我的问题得到了回答。非常感谢帕斯卡!你救了我的命。已经尝试解决这个问题 2 周了,直到我快死了才想打扰任何人。效果很好!
    • 不客气 :-) 玩得开心! (喝咖啡休息总是有利于提高工作效率;-))
    【解决方案2】:

    我想一种解决方案是将'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++;
    }
    ?>
    

    【讨论】:

    • 谢谢亚瑟,这也很完美!你摇滚。 Pascal 解决方案的唯一区别是每个文件夹上必须有相同的文件。比如说,我的 thumbs 文件夹中的文件较少,如果 pic1.jpg 不存在,文件 pic_1.jpg 将指向文件 pic_2.jpg。
    猜你喜欢
    • 2017-08-15
    • 2015-08-30
    • 2017-10-08
    • 2016-09-03
    • 1970-01-01
    • 2012-07-28
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多