我遇到了递归函数的问题,但是我没有找到符合我的需求的解决方案,因此希望有人能够帮助我。 我有一个多维数组,代表给定驱动器中的目录,并且我需要将每个最深层次的子目录转换为完整路径字符串。以下是该数组:
<?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;
}
Thank you in advance.