如何在PHP中使用动态多维数组?

如何在PHP中使用动态多维数组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这样的动态多维数组: Array ( [0] => index.php [src] => Array ( [src2] => Array ( [src3] => Array ( [0] => test_src3.php

我有这样的动态多维数组:

Array
(
    [0] => index.php
    [src] => Array
        (
            [src2] => Array
                (
                    [src3] => Array
                        (
                            [0] => test_src3.php
                        )

                    [0] => Array
                        (
                            [0] => test_src2.php
                        )

                )

            [0] => test_src.php
        )

    [src_test] => Array
        (
            [New Folder] => Array
                (
                )

            [src_test2] => Array
                (
                    [New Folder] => Array
                        (
                        )

                    [src_test3] => Array
                        (
                        )

                )

        )

      [1] => test.php
)
array(
    [0] => src/src2/src3
    [1] => src_test/New Folder
    [2] => src_test/src_test2/New Folder/
    [3] => src_test/src_test2/src_test3
)
维度的数量可能会根据用户输入的文件夹路径中的子目录进行更改(此程序由本地用户使用)

如何获取这些数组元素,使结果如下所示:

Array
(
    [0] => index.php
    [src] => Array
        (
            [src2] => Array
                (
                    [src3] => Array
                        (
                            [0] => test_src3.php
                        )

                    [0] => Array
                        (
                            [0] => test_src2.php
                        )

                )

            [0] => test_src.php
        )

    [src_test] => Array
        (
            [New Folder] => Array
                (
                )

            [src_test2] => Array
                (
                    [New Folder] => Array
                        (
                        )

                    [src_test3] => Array
                        (
                        )

                )

        )

      [1] => test.php
)
array(
    [0] => src/src2/src3
    [1] => src_test/New Folder
    [2] => src_test/src_test2/New Folder/
    [3] => src_test/src_test2/src_test3
)
顺便说一句,我有一个功能来实现这一点:

function getKeyPaths(array $tree, $glue = '/'){
        $paths = array();
        foreach ($tree as $key => &$mixed) {
            if (is_array($mixed)) {
                $results = getKeyPaths($mixed, $glue);
                foreach ($results as $k => &$v) {
                    $paths[$key . $glue . $k] = $v;
                }
                unset($results);
            } else {
                $paths[$key] = $mixed;
            }
        }

        return $paths;
    }
上述函数的结果与我预期的不同:

Array
(
    [0] => index.php
    [src/src2/src3/0] => test_src3.php
    [src/src2/0/0] => test_src2.php
    [src/0] => test_src.php
)
如何实现这一点?

一种方法:

function getKeyPaths(array $tree, $glue = '/', $return_array = true){
        $paths = "";
        foreach ($tree as $key => &$mixed) {
            $path = $key . $glue;
            if (is_array($mixed) && !is_int($key) ) {
                $paths .= $path . getKeyPaths( $mixed, $glue, false);
                if ($return_array) {
                    $paths .= "|";
                }
            }
        }
        if ($return_array) {
            return explode("|", trim($paths, "|"));
        }
        return $paths;
}

你说得对,先生。很抱歉,我已经给出了工作结果,我真的很抱歉。我实际上期望得到这样的结果:
array([0]=>src/src2/src3[1]=>src\u test/New Folder[2]=>src\u test/src\u test2/New Folder/[3]=>src\u test/src\u test2/src\u test3)
。我真的很抱歉。你能给我另一种方法吗?很抱歉,我给出了错误的结果信息。