如何在php中循环父目录?

时间:2013-08-05 15:24:31

标签: php

所有这些资源都可以递归循环遍历子目录,但是我没有找到一个显示如何做相反的事情。

这就是我想要做的......

<?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 个答案:

答案 0 :(得分:1)

尝试创建像这样的递归函数

function getSomeFile($path) {
    if(file_exists($path) {
        return file_get_contents($path);
    }
    else {
        return getSomeFile("../" . $path);
    }
}

答案 1 :(得分:1)

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

答案 2 :(得分:1)

<?php

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

答案 3 :(得分: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();
        }
    }

}