PHP 无法使用 array_walk() 打印数组中的所有键名



我的图库文件夹有这样的结构:

/年/月/日/文件

然后,我将把它们打印在我的网站上。我有一个函数,它可以获取一个大数组中的所有文件,结构如下:

Array
(
    [2017] => Array
        (
            [01] => Array
                (
                    [01] => Array
                        (
                            [0] => yo.jpg
                        )
                )
        )
    [2016] => Array
        (
            [02] => Array
                (
                    [01] => Array
                        (
                            [0] => yo.jpg
                        )
                )
            [01] => Array
                (
                    [03] => Array
                        (
                            [0] => timed-photos10.jpg
                        )
                    [01] => Array
                        (
                            [0] => yo.jpg
                        )
                )
        )
)

然后,我制作了一个新的功能来打印这些图像,我需要获取它们的路径,读取它们所有的数组键。

这是我的功能:

// ...
array_walk($mediaList, array($this, 'generateMedia'));      
public function generateMedia(&$value, $key)
{
    if(is_array($value))
    {
        echo $key . "/";
        array_walk($value, array($this, 'generateMedia'));
    }
    else
    {
        echo $value . "<br>";
    }
}

当一个数组包含多个数组时,就会出现问题。

我得到的结果是下一个:

2017/01/01/yo.jpg
2016/02/01/yo.jpg
01/03/timed-photos10.jpg
01/yo.jpg

正如您所看到的,第一条和第二条记录是可以的,但第三条和第四条是不正确的,因为这些元素有多个数组。

我一直在尝试不同的事情,但我无法解决。

我能做什么?

谢谢!

还没有测试你的代码,但这可以工作:

foreach ($mediaList as $year => $months) {
  foreach ($months as $month => $days) {
    foreach ($days as $day => $files) {
      foreach ($files as $key => $file) {
        echo $year . '/' . $month . '/' . $day . '/' . $file;
      }
    }
  }
}

最新更新