2015-09-14 2 views
2

Это мой код:Проблем с продолжать Еогеасп цикл

<?php 
function recursive($directory){ 
    $nr = 0; 
    $files = scandir($directory); 
    foreach($files as $file){ 
     if($file == '.' || $file == '..') continue; 
     if(is_dir($file)){ 
      echo $file.'<br>'; 
      continue; 
     } 
     echo $file.' ----------<br>'; 

    } 
} 
recursive('.'); 
?> 

В основном я хочу код в нижней части петли должны быть пропущен, пока больше нет файлов в каталоге.

Как я хочу, чтобы это выглядело:

enter image description here

Как это выглядит:

enter image description here

+0

Вы уверены, что хотите этого. Это не значит, что это так – RiggsFolly

ответ

1

Я думаю, вам сначала нужно указать каталоги, а затем файлы. Вы можете сделать это, изменив немного вашу функцию и запустить его дважды:

function recursive($directory, $type){ 
    $nr = 0; 
    $files = scandir($directory); 
    foreach($files as $file){ 
     if($file == '.' || $file == '..') continue; 
     if(is_dir($file) && $type == 'dir'){ 
      echo $file.'<br>'; 
     } else if(!is_dir($file) && $type == 'file'){ 
      echo $file.' ----------<br>'; 
     } 
    } 
} 
recursive('.', 'dir'); 
recursive('.', 'file'); 

(Кстати, несмотря на то, что называется «рекурсивным», это не делает рекурсию)

+0

Это работает отлично, спасибо большое! И я изменю его имя haha ​​ – Toma

+0

На вопрос я вырезал весь неживой код (т. Е. Рекурсивную часть). – Toma

2

Другой взгляд на ваш код, но у вас посмотрел на recursiveIterator Семейство классов? Это часть ядра php и довольно мощная.

 $folder='c:/temp'; 
     foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder, RecursiveDirectoryIterator::KEY_AS_PATHNAME), RecursiveIteratorIterator::CHILD_FIRST) as $file => $info) { 
      if($info->isFile() && $info->isReadable() && $info->isWritable()){ 
       echo $info->getFilename().'-------<br />'; 
      } elseif($info->isDir()){ 
       echo $info->getPath().'<br />'; 
      } 
     } 
+0

Я сделал, но мне нужно больше опыта, чтобы иметь возможность использовать его, что звучало как MMORPG lol :) Спасибо! – Toma

+0

С этим кодом каталоги и файлы будут не в правильном порядке (dir должен быть первым, а затем файлы) –

0

как это?

echo $file.'<br>'; 
if(is_dir($file) === false){ 
    echo $file.' ----------<br>';    
} 
+0

Спасибо за ваш ответ, но он, похоже, не работает, однако он разрешен! – Toma

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