我有这个数组(来自特定的功能:扩展名目录的列表和过滤器文件):
Array
(
[Dir_test] = Array
(
[dir_client] = Array
(
[0] = index.html
)
[0] = index.html
)
)
我想得到类似的东西。注意:目录可以有更多的子目录。
Array
(
[0] = Dir_test/dir_client/index.html
[1] = Dir_test/index.html
)
谢谢你的帮助;)
答案 0 :(得分:1)
假设您的输入数据如下所示:
$arr = array(
'Dir_test' => array (
'dir_client' => array (
0 => 'index.html'
),
0 => 'index.html'
)
);
最简单的解决方案是递归解决方案,例如:
function add_dir($dir) {
global $dirs;
$dirs[] = $dir;
}
// pathsofar should always end in '/'
function process_dir($dirarray, $pathsofar) {
foreach ($dirarray as $key => $value) {
if (is_array($value)) {
process_dir($value, $pathsofar . $key . '/');
} else {
add_dir($pathsofar . $value);
}
}
}
process_dir($arr, '');
print_r($dirs);
运行它:
$ php arr2.php
Array
(
[0] => Dir_test/dir_client/index.html
[1] => Dir_test/index.html
)
答案 1 :(得分:0)
您可以使用array_walk_recursive功能
答案 2 :(得分:0)
编写一个递归函数,该函数将数组和字符串作为参数,并在数组的每个键上返回并调用自身,该数组自身保存数组。