我有一个这样的数组:
Array(
'level1' => 'someval',
'level2' => 'someotherval',
'level3' => 'thirdval'
)
我想把它变成这个:
Array(
'someval' => Array(
'someotherval' => Array(
'thirdval' => 1
)
)
)
显然我可以手工建立上面的例子,但我不知道会有多少级别。这个简单的例子似乎没用,但是会有更多的值,所以每个级别中都会有多个数组。
答案 0 :(得分:2)
这样做
$array = array(
'level1' => array(
'level2' => array(
'level3' => 1
)
)
);
答案 1 :(得分:0)
你需要这样的东西吗?
$levels = array_keys(Array(
'level1' => 'someval',
'level2' => 'someotherval',
'level3' => 'thirdval'
));
$array = Array();
$aux = &$array;
foreach ($levels as $level => $value) {
if ($aux == 1)
$aux = array($value => 1);
$aux = &$aux[$value];
}
var_dump($array);
答案 2 :(得分:0)
这是我的看法:
function make_multi_level_array($arr) {
if (count($arr) == 1) return array(array_pop($arr) => 1);
else {
$level_key = array_pop(array_reverse($arr));
$sub_level = make_multi_level_array(
array_slice($arr,1,count($arr)-1)
);
return array(
$level_key => $sub_level
);
}
}
$arr = array(
'level1' => 'someval',
'level2' => 'someotherval',
'level3' => 'thirdval',
);
var_dump(make_multi_level_array($arr));
将输出:
array(1) {
["someval"]=>
array(1) {
["someotherval"]=>
array(1) {
["thirdval"]=>
int(1)
}
}
}
还尝试了下面的其他案例。
$arr = array(
'level1' => 'someval',
'level2' => 'someotherval',
'level3' => 'thirdval',
'level4' => 'fourthval'
);
似乎没关系:
array(1) {
["someval"]=>
array(1) {
["someotherval"]=>
array(1) {
["thirdval"]=>
array(1) {
["fourthval"]=>
int(1)
}
}
}
}