【发布时间】:2019-12-19 11:13:38
【问题描述】:
我正在尝试找到一种创建目录数组的方法。但是我们都知道目录可以有很多子目录,而这些子目录可以有更多的子目录等等。 目录长度未知,因为它可以改变。
假设我有一个目录www/webs/apps/pics 和另一个www/webs/test。
这个想法是有一个数组,例如:(是的,下面是 json,我只是在我的 php 演示中对其进行了转换,因为我发现它更容易阅读)
{
"www": {
"webs": {
"apps": {
"pics": "Im Here"
}
},
"test": "im Here too"
}
}
上面的输出与下面的代码没有关系。下面的代码只是为了说明我需要什么。
$exploedDir = explode("/", $unsortedDir);
foreach ($exploedDir as $dir){
$this->allDirectiroesFound[$dir] = $dir;
}
如何在不知道目录长度的情况下使$this->allDirectiroesFound 具有所需的多个维度,我无法对$this->allDirectiroesFound[][][][][][] 进行硬编码,因为下次数组长度可能是[][][]。
【问题讨论】:
-
通常,一旦您开始想要的不仅仅是“数组”,就该选择更好的数据结构了。在这种情况下,您真正想要的是一棵树,而不是“...的数组数组的数组”
-
我认为我链接的问题应该为您完美解决这个问题。这是您的示例路径的工作示例:3v4l.org/PEBrL
-
@Don'tPanic 谢谢
-
@Don'tPanic 可以解释通过引用位传递吗?为什么第二个
foreach循环需要这个温度作为通过引用&$temp[$key];传递?谢谢 -
通常 PHP 会按值传递所有内容。如果您在没有引用的情况下分配
$temp = $temp[$key];,则$temp只取$temp[$key]的值,即null,因为它尚未设置为任何值。通过引用分配,$temp指向$temp[$key]而不是取其值,因此您可以继续添加嵌套键。
标签: php