从数组中获取完整的文件路径

发布于 2024-10-16 17:45:48 字数 415 浏览 3 评论 0原文

我有这个数组(它来自一个特定的函数:扩展名上目录的列表和过滤文件):

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
)

谢谢你的帮助;)

I have this array (which comes from a specific function : list and filter files of a directory on extension) :

Array
(
    [Dir_test] = Array
        (
            [dir_client] = Array
                (
                    [0] = index.html
                )

            [0] = index.html
        )
)

And I would like to get something like. Note : The directory could have way more subdirs.

Array
(
    [0] = Dir_test/dir_client/index.html
    [1] = Dir_test/index.html
)

Thx for your help ;)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

很糊涂小朋友 2024-10-23 17:45:48

假设您的输入数据如下所示:

$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
)

Assuming your input data looks like this:

$arr = array(
    'Dir_test' => array (
        'dir_client' => array (
            0 => 'index.html'
        ),

        0 => 'index.html'
    )
);

The easiest solution is a recursive one, something like:

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);

Running it:

$ php arr2.php
Array
(
    [0] => Dir_test/dir_client/index.html
    [1] => Dir_test/index.html
)
绮烟 2024-10-23 17:45:48

您可以使用 array_walk_recursive 函数

You can use array_walk_recursive function

夏末的微笑 2024-10-23 17:45:48

编写一个递归函数,它接受一个数组和一个字符串作为参数,然后返回并在数组的每个键上调用自身,该键本身就是一个数组。

Write a recursive function that takes an array and a string as arguments and returns and calls itself on every key of the array that holds itself an array.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文