Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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
Php 递归浏览目录并获取文件名_Php - Fatal编程技术网

Php 递归浏览目录并获取文件名

Php 递归浏览目录并获取文件名,php,Php,我必须做一个php脚本谁浏览与子目录目录目录。 对于每个子目录,可能还有子目录,我必须得到filename和他的父目录 你有一个简单的解决办法吗? 谢谢我不是100%确定你在问什么,但是如果你看一下第一条评论,它有一个非常有用的递归扫描功能 <?php function dirToArray($dir) { $result = array(); $cdir = scandir($dir); foreach ($cdir as $key =&g

我必须做一个php脚本谁浏览与子目录目录目录。 对于每个子目录,可能还有子目录,我必须得到filename和他的父目录

你有一个简单的解决办法吗?
谢谢

我不是100%确定你在问什么,但是如果你看一下第一条评论,它有一个非常有用的递归扫描功能

<?php 
function dirToArray($dir) { 

      $result = array(); 

      $cdir = scandir($dir); 
      foreach ($cdir as $key => $value) 
      { 
         if (!in_array($value,array(".",".."))) 
         { 
            if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) 
            { 
               $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value); 
            } 
            else 
            { 
               $result[] = $value; 
            } 
         } 
      } 

      return $result; 
   } 
?> 

因为我也必须为我的网站创建相同的功能,所以我将发布我的功能作为参考

function recursiveFileSearch($path, $searchmask = "*") {
    $path = rtrim($path, '/');

    $files = array();
    if(is_array($searchmask)) {
        for($i = 0; $i < count($searchmask); $i++) {
            $files = array_merge($files, glob($path.'/'.$searchmask[$i]));
        }
        sort($files);
    } else {
        $files = glob($path.'/'.$searchmask);
    }


    $dirs = glob($path.'/*', GLOB_ONLYDIR);
    foreach($dirs as $dir) {
        if(is_dir($dir)) {
            $files = array_merge($files, recursiveFileSearch($dir, $searchmask));
        }
    }

    sort($files);
    return $files;
}

谢谢我会试试这个解决方案!
function recursiveFileSearch($path, $searchmask = "*") {
    $path = rtrim($path, '/');

    $files = array();
    if(is_array($searchmask)) {
        for($i = 0; $i < count($searchmask); $i++) {
            $files = array_merge($files, glob($path.'/'.$searchmask[$i]));
        }
        sort($files);
    } else {
        $files = glob($path.'/'.$searchmask);
    }


    $dirs = glob($path.'/*', GLOB_ONLYDIR);
    foreach($dirs as $dir) {
        if(is_dir($dir)) {
            $files = array_merge($files, recursiveFileSearch($dir, $searchmask));
        }
    }

    sort($files);
    return $files;
}