PHP 一维数组转换为多维数组
- 原始数组
$arr = ['aa','bb','cc','vv'];
- ㊙️ 神秘算法 ㊙️
function tree ($arr,$con){
$tree = [];
$tmp = &$tree;
foreach ($arr as $key) {
$tmp[$key] = [];
$tmp = &$tmp[$key];
}
$tmp = $con;
return $tree;
}
$data = [];
$arr = ['aa','bb','cc','vv'];
$data = array_merge_recursive($data,tree($arr,'999'));
- 返回结果
array(1) {
["aa"]=>
array(1) {
["bb"]=>
array(1) {
["cc"]=>
array(1) {
["vv"]=>
string(3) "999"
}
}
}
}
- 原始数据
$str = 'aa/bb/cc/www';
- ㊙️ 神秘算法 ㊙️
$path = '';
$tmp = &$data;
foreach (explode('/',$str) as $v) {
$path .= '/'.$v;
if (!isset($tmp[$v]))
$tmp[$v] = ['name' => $v, 'namepath' => trim($path,'/'), 'children' => []];
$tmp = &$tmp[$v]['children'];
}
$tmp = '∞';
- 返回结果
Array
(
[aa] => Array
(
[name] => aa
[namepath] => aa
[children] => Array
(
[bb] => Array
(
[name] => bb
[namepath] => aa/bb
[children] => Array
(
[cc] => Array
(
[name] => cc
[namepath] => aa/bb/cc
[children] => Array
(
[www] => Array
(
[name] => www
[namepath] => aa/bb/cc/www
[children] => ∞
)
)
)
)
)
)
)
)