[英]Problems with continue in foreach loop
这是我的代码:
<?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('.');
?>
基本上,我希望跳过循环底部的代码,直到目录中没有其他文件为止。
我希望它看起来如何:
外观:
您的代码有不同的看法,但您是否看过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 />';
}
}
我认为您首先需要列出目录,然后列出文件。 您可以通过稍微更改一下功能并运行两次来做到这一点:
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');
(顺便说一句,尽管它被称为“递归”,但它并不递归)
像这样?
echo $file.'<br>';
if(is_dir($file) === false){
echo $file.' ----------<br>';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.