示例:
$dirs = glob('./*', GLOB_ONLYDIR);
echo "<a href='$dirs[0]'> <img src='$dirs[0]/thumb.jpg'/></a> ";
echo "<a href='$dirs[1]'> <img src='$dirs[1]/thumb.jpg'/></a> ";
我的问题是有些文件夹只有一个,有些文件夹有2个子文件夹 如何只回显现有文件夹?
谢谢。
修改
所以我想要的是创建一个php文件,从文件放置文件夹中的所有文件夹生成一个库。 但如果我使用上面的回声,例如:
$dirs = glob('./*', GLOB_ONLYDIR);
echo "<a href='$dirs[0]'> <img src='$dirs[0]/thumb.jpg'/></a> ";
echo "<a href='$dirs[1]'> <img src='$dirs[1]/thumb.jpg'/></a> ";
echo "<a href='$dirs[2]'> <img src='$dirs[2]/thumb.jpg'/></a> ";
echo "<a href='$dirs[3]'> <img src='$dirs[3]/thumb.jpg'/></a> ";
echo "<a href='$dirs[4]'> <img src='$dirs[4]/thumb.jpg'/></a> ";
echo "<a href='$dirs[5]'> <img src='$dirs[5]/thumb.jpg'/></a> ";
并且文件夹里面只有3个文件夹比我有3个空拇指。因为 $ dirs [3]及以上不存在。 :(
答案 0 :(得分:0)
您需要一个递归函数才能获得超过1级目录。您可以尝试以下方式:
function glob_recursive($pattern, $flags = 0)
{
$files = glob($pattern, $flags);
foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR) as $dir)
{
$files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags));
}
return $files;
}
print_r(glob_recursive('/var/www/*',GLOB_ONLYDIR));
此示例仅打印/var/www
文件夹下的目录。要非常小心性能,如果目录结构太大,可能会很慢。
方法的original source。
修改强>
我认为你想要的是将数组放在一个foreach循环中,这样你就不会得到空的缩略图:
$dirs = glob('./*', GLOB_ONLYDIR);
foreach ($dirs as $index=>$dir){
echo "<a href='$dirs[$index]'> <img src='$dirs[$index]/thumb.jpg'/></a> ";
}
希望这会对你有所帮助。