已经有代码了
$res = recurDir($path);
var_dump($res);
function recurDir($pathName){
$result = array();
$temp = array();
if(!is_dir($pathName) || !is_readable($pathName)) die("不是目录或无读权限!");
$allFiles = scandir($pathName);
foreach($allFiles as $fileName){
if(in_array($fileName,array('.','..'))) continue;
$fullName = $pathName . '/'.$fileName;
if(is_dir($fullName)){
$result[$fileName] = recurDir($fullName);
}
else{
if(is_file($fullName)){
$files[] = $fileName;
}
}
}
foreach($files as $f){
$result[] = $f;
}
return $result;
}
不过返回的是类似
array
  'A' => 
    array
      'AA' => 
        array
          0 => string '1111.txt' (length=8)
          1 => string '1222.txt' (length=8)键名是目录名
我想让他只返回一维数组,只包含文件名,怎么改

解决方案 »

  1.   

    只包含文件名 是不科学的,如果两个目录下有同名文件的话,你就不知道谁是谁了
    function recurDir($pathName) {
      $ar = glob($pathName.'/*');
      for($i=0; $i<count($ar); $i++) {
        if(is_dir($ar[$i])) {
           $ar = array_merge($ar, recurDir($ar[$i]));
        }
      }
      return $ar;
    }
    如果你一定不要路径,那么
    $res = recurDir($path);
    后,再
    $res = array_map('basename', $res);
    去掉路径,也是很简单的