如何在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)
。我真的很抱歉。你能给我另一种方法吗?很抱歉,我给出了错误的结果信息。