2013-11-20 2 views
0

Я хочу напечатать все имена папок внутри родительской папки. Текущая проблема, с которой я столкнулся, есть, хотя у меня есть 400 + папок в папке, только 257 печатаются. Опять же, это не проблема, связанная с разрешениями.Повторить все имена папок в папке

Пожалуйста найти мой код ниже:

$newdir = "content/"; 
    $dircnt = 0; 
// Open a known directory, and proceed to read its contents 
if (is_dir($newdir)) { 
    if ($dh = opendir($newdir)) { 
     while (($file = readdir($dh)) !== false) { 
      $dircnt++; 
      if(filetype($newdir. $file) == 'dir') { 
      echo "filename: $file : filetype: " . filetype($newdir. $file) . "dircnt:"  .$dircnt. "<br>"; 
      } 
     } 
     closedir($dh); 
     } 
    } 
} 
+1

делает остановку цикла, или пропустить записи? –

+0

@ Bart Friederichs: Петли просто останавливаются, как когда я повторял что-то внутри цикла, он выполнялся до 259-й папки (257 папок вместе с «.» И «..») – Supereme

+0

Откуда вы знаете число сгибов как 400 +, переменная '$ dircnt', тогда вы можете поместить' $ dircnt ++; 'неправильно. – Young

ответ

0

Вы можете использовать функцию glob() - возвращает массив, содержащий совпавшие файлы/каталоги, пустой массив, если файл не найден, или FALSE при ошибке.

 $filesDirectories = glob($newdir.'*', GLOB_BRACE); 
     foreach($filesDirectories as $key=>$file) { 
      echo "$file size " . filesize($file) . "\n";    
     } 
0

Я хотел бы использовать Glob:

$newdir = "content/"; 
$dirs = glob($newdir.'*',GLOB_ONLYDIR); 
foreach($dirs as $index=>$dir){ 
    echo "filename ". $dir." filetype ".filetype($newdir.$dir)." dircnt:".($index+1)."<br/>"; 
} 
+0

Он дает тот же результат, о котором я упомянул. – Supereme

Смежные вопросы