无法在PHP中返回目录

时间:2018-10-22 10:37:14

标签: php directory

使用此代码:

$path = public_path().'/root';
$files = array();
$folders = array();

if (is_dir($path)) {
    $dirhandle = opendir($path);
        while (($dir = readdir($dirhandle)) !== false) {
            if(is_dir($dir) && $dir!= "." && $dir!= "..") {
                $folders[] = $dir;
            }
            else if(is_file($dir)) {
                $files[] = $dir;
            }
        }
       closedir();
}
return $folders;`

我可以返回根文件夹中的文件,但不能返回根文件夹中的文件夹。

在根文件夹中,我有3个文件夹和4个文件。  您能帮我解决此错误吗?

3 个答案:

答案 0 :(得分:0)

根据我的评论...

$contents = scandir('.');  // Working directory is current dir

foreach($contents as $key => $entry){
  if(is_dir($entry)){
    $directories[] = $entry;
  } else {
    $files[] = $entry;
  }
}

echo('<pre>');
var_dump($directories, $files);
echo('</pre>');

答案 1 :(得分:0)

以下代码将解决您的问题。

$path = public_path().'/root';
foreach (glob($path . '/*') as $item) {
   if (is_dir($item)) {
      $folders[] = basename($item);
   } else {
      $files[] = basename($item);
   }
}

var_dump($folders);
var_dump($files);

有关glob http://php.net/manual/en/function.glob.php

的更多详细信息

答案 2 :(得分:0)

您可以使用此代码段

$fnf = scandir('.');
$result = array();
$i=$j=0;
foreach($fnf as $key => $val){
  if(is_dir($val)){
     if($val == '..' || $val == '.') //Remove if you want to current and root directory (i.e . & ..)
        continue;
     $result['dir'][$i] = $val;
     $i++;
  } else {
    $result['files'][$j] = $val;
    $j++;
  }
}

echo '<pre>';
print_r($result);