"dir1/dir2/dir3/file2.ext" [2] => "dir1-6ren">
gpt4 book ai didi

表示文件路径的 PHP 多维数组

转载 作者:搜寻专家 更新时间:2023-10-31 21:14:19 25 4
gpt4 key购买 nike

我有一个包含文件完整路径的数组。像这样:

[0] => "dir1/dir2/dir3/file.ext"
[1] => "dir1/dir2/dir3/file2.ext"
[2] => "dir1/dir2/dir3/file3.ext"
[3] => "dir2/dir4/dir5/file.ext"

我需要解析它并得到一个多维数组,如下所示:

[dir1] => [dir2] => [dir3] => file.ext
=> file2.ext
=> file3.ext
[dir2] => [dir4] => [dir5] => file.ext

有什么想法吗?必须处理各种深度的结构。

最佳答案

建立@J。布鲁尼的回答,你需要的代码如下:

function parse_paths_of_files($array)
{
rsort($array);

$result = array();

foreach ($array as $item) {
$parts = explode('/', $item);
$current = &$result;

for ($i = 1, $max = count($parts); $i < $max; $i++) {

if (!isset($current[$parts[$i - 1]])) {
$current[$parts[$i - 1]] = array();
}

$current = &$current[$parts[$i - 1]];
}

$last = end($parts);

if (!isset($current[$last]) && $last) {
// Don't add a folder name as an element if that folder has items
$current[] = end($parts);
}
}

return $result;
}

J Bruni 的回答是狡猾的,因为它假定存在的值实际上并不存在,从而导致大量 PHP 未定义索引错误。

如果文件夹已经有要阻止的条目,此版本还会阻止将文件夹名称添加到列表中:

$result = [
0 => folder_name
folder_name => [
...
]
]

关于表示文件路径的 PHP 多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12448380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com