0

有所有这些资源用于递归循环遍历子目录,但我还没有找到一个显示如何执行相反操作的资源。

这就是我想做的...

<?php

// get the current working directory

// start a loop

    // check if a certain file exists in the current directory

    // if not, set current directory as parent directory

// end loop

所以,换句话说,我在当前目录中搜索一个非常特定的文件,如果它不存在,检查它的父级,然后它是父级,等等。

我尝试过的一切对我来说都是丑陋的。希望有人对此有一个优雅的解决方案。

谢谢!

4

4 回答 4

1

尝试创建一个这样的递归函数

function getSomeFile($path) {
    if(file_exists($path) {
        return file_get_contents($path);
    }
    else {
        return getSomeFile("../" . $path);
    }
}
于 2013-08-05T15:29:07.077 回答
1

最简单的方法是使用 ../ 这会将您移动到上面的文件夹。然后,您可以获得该目录的文件/文件夹列表。不要忘记,如果您检查上面目录的子级,那么您正在检查您的兄弟姐妹。如果你只是想直接上树,那么你可以简单地继续升级一个目录,直到你达到 root 或你被允许去的地方。

于 2013-08-05T15:29:35.633 回答
1
<?php

$dir = '.';
while ($dir != '/'){
    if (file_exists($dir.'/'. $filename)) {
        echo 'found it!';
        break;
    } else {
        echo 'Changing directory' . "\n";
        $dir = chdir('..');
    }
}
?>
于 2013-08-05T15:45:30.423 回答
0

修改了 mavili 的代码:

function findParentDirWithFile( $file = false ) {
    if ( empty($file) ) { return false; }

    $dir = '.';

    while ($dir != '/') {
        if (file_exists($dir.'/'. $file)) {
            echo 'found it!';
            return $dir . '/' . $file;
            break;
        } else {
            echo 'Changing directory' . "\n";
            chdir('..');
            $dir = getcwd();
        }
    }

}
于 2014-03-04T21:17:16.207 回答