foreach文件夹回显foreach图像

时间:2014-02-24 15:28:51

标签: php html foreach

我目前正在使用此

foreach (glob('img/gallery/*') as $dir) {
    $folder = str_replace('img/gallery/', '', $dir);
    foreach (glob($dir.'/*.jpg') as $img)  {
        $img1 = str_replace('img/gallery/'.$folder.'/', '', $img);
        $img1 = str_replace('.jpg', '', $img1);
        $img = str_replace(' ', '%20', $img);?>
        <a class="portfolio" title="<?=$img1?>" href="<?=$img?>">
            <li class="mix <?=$folder?>" 
                data-cat="<?=$folder?>" 
                style="height:145px;width:145px;float:left;margin-right:2.5px;margin-left:2.5px;margin-bottom:5px; background:url(<?=$img?>);background-size:cover;">
            </li>
        </a>
    <? }
}

它正常工作正是我所需要的,获取所有文件和文件夹名称并显示它们,现在问题是我有:

警告 188

index.php 中为foreach()提供的参数无效

显示源代码,但一切正常。第188行是第二个foreach。

3 个答案:

答案 0 :(得分:2)

您的子目录中是否有任何文件?例如/img/gallery/somefile,然后尝试再次使用img/gallery/somefile/*.jpg进行全局渲染,这将使第二个glob失败,返回布尔值false并触发错误消息。

你需要检查你内部的整体是否真的是一个目录,例如

foreach(glob(...) as $dir) {
    if (issdir($dir)) {
         ...
    }
}

答案 1 :(得分:1)

试试这个

$images = glob($dir.'/*.jpg');
if (count($images))
foreach($images as $img) {

答案 2 :(得分:1)

在第一个foreach中使用GLOB_ONLYDIR作为标记,仅获取目录:

foreach (glob('img/gallery/*',GLOB_ONLYDIR) as $dir) {