如何使用GLOB_ONLYDIR(php)仅回显现有文件夹
例如:如何使用GLOB_ONLYDIR(php)仅回显现有文件夹,php,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> "; $dirs=glob(“./*”,glob_ONLYDIR); 回声“; 回声“;
$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> ";
$dirs=glob(“./*”,glob_ONLYDIR);
回声“;
回声“;
我的问题是有些文件夹只有一个子文件夹,有些文件夹有两个子文件夹
如何仅回显现有文件夹
多谢各位
编辑:
所以我想创建一个php文件,从文件所在文件夹中的所有文件夹生成一个库。
但如果我像上面那样使用echo,例如:
$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> ";
$dirs=glob(“./*”,glob_ONLYDIR);
回声“;
回声“;
回声“;
回声“;
回声“;
回声“;
文件夹里只有3个文件夹,而我只有3个空拇指。因为
$dirs[3]及以上版本不存在:(您需要一个递归函数才能获取多个级别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
文件夹下的目录。请务必注意性能,如果目录结构太大,则可能会很慢
该方法的有效性
编辑:
我认为您想要的是使用foreach循环来遍历数组,这样就不会得到空的缩略图:
$dirs = glob('./*', GLOB_ONLYDIR);
foreach ($dirs as $index=>$dir){
echo "<a href='$dirs[$index]'> <img src='$dirs[$index]/thumb.jpg'/></a> ";
}
$dirs=glob(“./*”,glob_ONLYDIR);
foreach($dirs作为$index=>$dir){
回声“;
}
希望这对您有所帮助。您需要一个递归函数才能获取多个级别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
文件夹下的目录。请务必注意性能,如果目录结构太大,则可能会很慢
该方法的有效性
编辑:
我认为您想要的是使用foreach循环来遍历数组,这样就不会得到空的缩略图:
$dirs = glob('./*', GLOB_ONLYDIR);
foreach ($dirs as $index=>$dir){
echo "<a href='$dirs[$index]'> <img src='$dirs[$index]/thumb.jpg'/></a> ";
}
$dirs=glob(“./*”,glob_ONLYDIR);
foreach($dirs作为$index=>$dir){
回声“;
}
希望这对您有所帮助。我必须推荐这种方法而不是glob。。检查第一个用户对guidanceHi的评论我必须推荐这种方法而不是glob。。检查第一个用户对guidanceHi的评论!感谢您的回答,但可能我的问题没有指出我的问题。编辑:)@asurbernardo@tibi888我编辑了这篇文章。查看并告诉我这是否是您想要的,因为我不确定我是否完全理解您的问题。@tibi888 Perfect mate,很高兴这很有用;)!现在(用你的代码)我有了和文件夹一样多的拇指,所以我找到了地方!:)现在的问题是,它不仅输出目录:@asurbernardo@tibi888哎呀,是我的错,只是把$key变量重命名为$index,我搞糊涂了!(更新)嗨!谢谢你的回答,但也许我的问题没有指出我的问题。编辑:)@asurbernardo@tibi888我编辑了这篇文章。查看并告诉我这是否是您想要的,因为我不确定我是否完全理解您的问题。@tibi888 Perfect mate,很高兴这很有用;)!现在(用你的代码)我有了和文件夹一样多的拇指,所以我找到了地方!:)现在的问题是,它不仅输出目录:@asurbernardo@tibi888哎呀,是我的错,只是把$key变量重命名为$index,我搞糊涂了!(更新)