PHP将多维目录数组转换为字符串

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP将多维目录数组转换为字符串脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了递归函数,我找不到任何可以完成我需要的东西,所以我希望有人可以帮我解决这个问题.
我有一个给定驱动器的多维目录数组,我需要将它们转换为each最深子目录的完整路径字符串.这是阵列:

<?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;
}

先感谢您.

解决方法

前缀的想法很好,但这部分不起作用,因为你可能得到多个结果:

$result .= $key .'/'. flatten_directory($value,$prefix . $key . '.');

而不是返回单个字符串,返回一个字符串数组.你也在混淆何时使用$key和$value.

function flatten_directory($directory,$prefix = "") {
    $result = array();
    foreach ($directory as $key => $part) {
        if (is_array($part)) {
            $result = array_merge($result,flatten_directory($part,$prefix . "/" . $key));
        } else {
            $result[] = $prefix . "/" . $part . "/";
        }
    }
    return $result;
}

输出

Array
(
    [0] => /CANON/DCIM/100CANON/
    [1] => /CANON/DCIM/101CANON/
    [2] => /CANON/DCIM/CANONMSC/
    [3] => /CANON/CANON_SC/IMAGE/0001/
    [4] => /CANON/CANON_SC/DOCUMENT/0001/
    [5] => /CANON/MISC/
)

脚本宝典总结

以上是脚本宝典为你收集整理的PHP将多维目录数组转换为字符串全部内容,希望文章能够帮你解决PHP将多维目录数组转换为字符串所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。