【发布时间】:2016-06-23 22:41:16
【问题描述】:
我被递归函数困住了,我找不到任何可以完全满足我需要的东西,所以我希望有人能帮我解决这个问题。 我有一个给定驱动器的多维目录数组,我需要将它们转换为每个最深子目录的完整路径字符串。这是数组:
<?php
$array = array(
'CANON' => array(
'DCIM' => array(
'100CANON',
'101CANON',
'CANONMSC'
),
'CANON_SC' => array(
'IMAGE' => array(
'0001'
),
'DOCUMENT' => array(
'0001'
),
),
'MISC'
));
这是所需的输出:
/CANON/DCIM/100CANON/
/CANON/DCIM/101CANON/
/CANON/DCIM/CANONMSC/
/CANON/CANON_SC/IMAGE/0001/
/CANON/CANON_SC/DOCUMENT/0001/
/CANON/MISC/
这是我目前所拥有的,但它只适用于第一个最深的目录并忽略同级目录。
<?php
function flatten_directory($array, $prefix = '')
{
$result = '';
foreach($array as $key=>$value)
{
if(is_array($value))
{
$result .= $key .'/'. flatten_directory($value, $prefix . $key . '.');
}
else
{
$result .= $prefix . $key . $value;
}
}
return $result;
}
提前谢谢你。
【问题讨论】:
-
你为什么放一个'.'在前缀的时候发现值是数组?
标签: php arrays recursion multidimensional-array