循环通过多维数组输出数组中文件的路径

时间:2013-12-05 16:32:24

标签: php multidimensional-array

我有这个脚本,它将搜索目录并将文件树存储到下面的数组中:

$dir = ABSPATH."/uploads";
    function getDirectoryTree( $outerDir , $x){
        $dirs = array_diff( scandir( $outerDir ), Array( ".", ".." ) );
        $dir_array = Array();
        foreach( $dirs as $d ){
            if( is_dir($outerDir."/".$d)  ){
                $dir_array[ $d ] = getDirectoryTree( $outerDir."/".$d , $x);
            }else{
                 if (($x)?ereg($x.'$',$d):1)
                    $dir_array[ $d ] = $d;
                }
            }
            return $dir_array;
        }

        $dirlists = getDirectoryTree($dir);

    Array
(
    [2013] => Array
    (
        [adamson] => Array
            (
                [1] => Array
                    (
                        [tester.pdf] => tester.pdf
                    )

                [11] => Array
                    (
                        [tester.pdf] => tester.pdf
                    )

            )

        [danaenus] => Array
            (
                [1] => Array
                    (
                        [tester.pdf] => tester.pdf
                    )

            )

        [richardgregson] => Array
            (
                [9] => Array
                    (
                        [tester.pdf] => tester.pdf
                    )

            )

        [rik] => Array
            (
                [1] => Array
                    (
                        [tester.pdf] => tester.pdf
                    )

                [2] => Array
                    (
                        [tester.pdf] => tester.pdf
                    )

            )

    )

[2014] => Array
    (
        [rik] => Array
            (
                [1] => Array
                    (
                        [tester.pdf] => tester.pdf
                    )

            )

    )

)

我想要数组中的所有内容:数据需要像“WEBSITENAME.COM/uploads/2013/rik/1/tester.pdf”

我想循环遍历数组以检索文件的URL ...使用多维数组的新工作因此任何指导都会很棒!

谢谢!

1 个答案:

答案 0 :(得分:0)

只需使用var_dump

打印数组

var_dump($dirlists);

现在您应该看到结构,当您知道结构时,您可以轻松找到一种方法来挖掘您需要的东西

尝试这个

function getDirectoryTree($outerDir, &$filePaths, $x) {
    $dirs = array_diff(scandir($outerDir), Array(".", ".."));
    $dir_array = Array();
    foreach ($dirs as $d) {
        if (is_dir($outerDir . "/" . $d)) {

            $dir_array[$d] = getDirectoryTree($outerDir . "/" . $d, $filePaths, $x);

        } else {
            if (($x) ? ereg($x . '$', $d) : 1)
                $filePaths[] = $outerDir . "/" . $d;
                $dir_array[$d] = $d;
        }
    }

    return $dir_array;
}
$filePaths = array();
$dirlists = getDirectoryTree($dir, $filePaths);
var_dump(filePaths);