This is my code:
<?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('.');
?>
Basically I want the code at the bottom of the loop to be skipped until they are no more files in the directory.
How I want it to look:
How it looks:
答案 0 :(得分:2)
A different take on your code but have you looked at the recursiveIterator
family of classes? It's part of the php core and is pretty powerful.
$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 />';
}
}
答案 1 :(得分:1)
I think you first need to list the directories, then the files. You can do that by changing a bit your function and running it twice:
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');
(By the way, although it's called "recursive", it doesn't do recursion)
答案 2 :(得分:0)
Like this?
echo $file.'<br>';
if(is_dir($file) === false){
echo $file.' ----------<br>';
}