使用PHP按键和值来内置多维数组

时间:2014-07-15 15:26:08

标签: php arrays implode

我想将数组键加入到文件路径中,最后的值作为文件本身(下面的数组是“filetree”)

数组(深度,大小和键名是动态的):

[0] => bla.tif
[1] => quux.tif
[foo] => Array (
        [bar] => Array (
                [lorem] => Array (
                        [1] => ipsum.tif
                        [2] => doler.tif
                )
        )
)
[bar] => Array (
        [qux] => Array (
                [baz] => Array (
                        [1] => ipsum.tif
                        [2] => ufo.tif
                )
        )
)

这个结果没问题:

[0] => bla.tif
[1] => quux.tif
[2] => foo/bar/lorem/ipsum.tif
[3] => foo/bar/lorem/doler.tif
[4] => bar/qux/baz/ipsum.tif
[5] => bar/qux/baz/ufo.tif

也许还有一个纯PHP解决方案。我用array_map尝试过,但结果不够好。

1 个答案:

答案 0 :(得分:3)

我会使用递归函数来折叠这个数组。这是一个例子:

function collapse($path, $collapse, &$result)
{
  foreach($collapse AS $key => $value)
  {
    if(is_array($value))
    {
      collapse($path . $key . "/", $value, $result);
      continue;
    }
    $result[] = $path . $value;
  }
}

以下是如何使用:

$result = array();
$toCollapse = /* The multidimentional array */;
collapse("", $toCollapse, $result);

$result将包含"内爆"阵列