我有一个像这样的数组,
Array
(
[0] => controllers
[1] => event
[2] => add_new_file.php
)
我想改变它
Array([controllers]=>[event]=>add_new_file.php)
有没有想这样改的想法,有没有人想改成这样。
尝试:
$input = array('controllers', 'event', 'add_new_file.php');
$output = null;
foreach (array_reverse($input) as $value) {
if (is_null($output)) {
$output = $value;
} else {
$output = array($value => $output);
}
}
输出:
array (size=1)
'controllers' =>
array (size=1)
'event' => string 'add_new_file.php' (length=16)
虽然array_reverse()
和循环的组合可以解决问题,但我发布的时间太晚了(请参阅很好的答案)。所以,这个答案只是一种玩笑(因为我很好奇 - 是否有可能用单线解决问题)
$rgData = ['foo', 'bar', 'baz'];
eval('$rgResult["'.join('"]["', array_slice($rgData, 0, -1)).'"] = "'.array_pop($rgData).'";');
//var_dump($rgResult);
(通常,永远不要使用eval
- 但这是学术兴趣,仅此而已)