PHP无限极数组如何映射成文件夹结构?(成文.数组.映射.结构.无限极...)
使用 php 将无限极数组映射成文件夹
在处理配置文件时,经常需要将嵌套的数组映射成文件和目录结构。例如,给定以下配置文件:
PHP
$config = [
'uuid'=>'string',
'info'=>'string',
'main'=>[
'uuid'=>'string',
'cmd'=>'string',
'child'=>[
'uuid'=>'string',
'remark'=>'string',
'game'=>[
'user'=>'name',
'money'=>'1000'
]
],
'logs'=>[
'path'=>'/path/path',
'date'=>'2023-09-01'
]
],
'video'=>[
'uuid'=>'vid',
'info'=>'info',
'file'=>[
'size'=>'12900'
]
]
];
需要将其映射成如下目录结构:
PHP
main
main/child
main/child/game
main/logs
video
video/file
为了解决这个问题,可以使用如下的 php 代码将无限极数组映射成文件夹:
PHP
function flatten($nodes, $prefix = '') {
$list = [];
foreach ($nodes as $key => $value) {
if (is_array($value)) {
$path = $prefix . $key;
$list[] = $path;
$list = array_merge($list, flatten($value, $path . '/'));
}
}
return $list;
}
$list = flatten($config);
或者使用 recursiveiteratoriterator:
PHP
$list = [];
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($config), RecursiveIteratorIterator::SELF_FIRST);
foreach ($iterator as $key => $value) {
if (is_array($value)) {
$path = '';
foreach (range(0, $iterator->getDepth()) as $depth) {
$path .= $iterator->getSubIterator($depth)->key() . '/';
}
$list[] = rtrim($path, '/');
}
}
以上就是PHP无限极数组如何映射成文件夹结构?的详细内容,更多请关注知识资源分享宝库其它相关文章!