PHP将多维目录数组转换为字符串
发布时间:2020-12-13 16:59:51 所属栏目:PHP教程 来源:网络整理
导读:我遇到了递归函数,我找不到任何可以完成我需要的东西,所以我希望有人可以帮我解决这个问题. 我有一个给定驱动器的多维目录数组,我需要将它们转换为EACH最深子目录的完整路径字符串.这是阵列: ?php$array = array('CANON' = array( 'DCIM' = array( '100CANO
我遇到了递归函数,我找不到任何可以完成我需要的东西,所以我希望有人可以帮我解决这个问题.
我有一个给定驱动器的多维目录数组,我需要将它们转换为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/ ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |