我目前正在使用此
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。
答案 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) {