繁体   English   中英

在foreach循环中继续的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM