【发布时间】:2020-09-06 05:11:00
【问题描述】:
我有一个如下结构的多维数组。它模仿了一个文件结构,该结构基于 ./YEAR/MONTH/DAY/FILE.
存储文件Array
(
[2019] => Array
(
[05] => Array
(
[12] => Array
(
[0] => default.md
)
)
[12] => Array
(
[22] => Array
(
[0] => default.md
)
)
)
[2020] => Array
(
[05] => Array
(
[19] => Array
(
[0] => default.md
)
)
)
)
我正在尝试遍历整个数组并获取每个特定文件的值,同时还获取该指定文件的关联 YEAR、MONTH 和 DAY。
当我试图在一个 for 循环中嵌套多个 foreach 循环时,我的循环已经偏离了。越深入兔子洞,遇到的问题就越多
$post_search = directoryArrayMap("content"); //function that creates the array
$year = array_keys($post_search);
for($i = 0; $i < count($post_search); $i++ ) {
echo $year[$i] . "<br>";
foreach($post_search[$year[$i]] as $month => $day ) {
echo $month[$i] . "<br>";
foreach($post_search[$key[$month[$i]]] as $day => $post_file ) {
echo $day . "<br>";
}
}
}
我正在寻找迭代多维数组的最佳方法。谢谢。我想要的输出是这样的:
档案一: 年份:2020 月:05 天数:12 文件 B: 年份:2019 月:12 天数:22 文件 C: 年份:2019 月:05 天数:19目标是与另一个检查“is_file”并显示输出的循环一起运行。
【问题讨论】:
-
您可能想要使用RecursiveIteratorIterator Object,而不是嵌套一大堆foreach 循环。这里的想法是它将您的数组扁平化为单个 foreach 循环,但您仍然可以跟踪您的深度以及您在嵌套数组结构中的位置。使用它,连同
getDepth、getSubIterator和key方法的组合,您可以遍历您的树并在您点击代表文件的任何非数组值时从树中提取您需要的任何键。
标签: php for-loop multidimensional-array foreach