Не могу вернуть каталог в php - PullRequest
0 голосов
/ 22 октября 2018

Используя этот код:

$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 голосов
/ 22 октября 2018

Следующий код решит вашу проблему.

$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

0 голосов
/ 22 октября 2018

Вы можете использовать этот фрагмент кода

$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);
0 голосов
/ 22 октября 2018

Основано на моем комментарии ...

<code>$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('
');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...