Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用GLOB_ONLYDIR(php)仅回显现有文件夹_Php - Fatal编程技术网

如何使用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,我搞糊涂了!(更新)