从带分隔符的字符串创建嵌套数组
问题描述:
我有一个像brachA-branchB-branchC
这样的字符串。我试图使它的嵌套数组如下从带分隔符的字符串创建嵌套数组
[
'name'=>'brachA',
'sub'=> [
'name'=>'brachB',
'sub'=>[
'name'=>'brachC'
]
]
]
我试过如下(https://3v4l.org/A781D)
<?php
$nested_array = array();
$temp = &$nested_array;
$item = 'brachA-branchB-branchC';
foreach (explode('-', $item) as $key => $value) {
$temp = &$temp[$value];
}
print_r($nested_array);
输出我得到如下
Array
(
[brachA] => Array
(
[branchB] => Array
(
[branchC] =>
)
)
)
任何想法,如何做到这一点?
答
它可能可以使用foreach
循环遍历由explode()
返回的反向数组,但使用递归函数更容易。
function makeArray(array $pieces)
{
$first = array_shift($pieces);
$array = array('name' => $first);
if (count($pieces)) {
$array['sub'] = makeArray($pieces);
}
return $array;
}
$item = 'brachA-branchB-branchC';
print_r(makeArray(explode('-', $item)));
的makeArray()
功能接收与所述串片段的阵列。它将第一个项目放在新数组的'name'
键下,并与数组的其余部分一起调用以生成置于'sub'
键之下的数组。如果没有休息,它不会为'sub'
键放置任何东西(在最后一次呼叫时,$pieces
是array('brachC')
。