格式化数组值

时间:2013-09-10 12:35:45

标签: php arrays

我有一个像

这样的数组
Array
(
    [0] => controllers
    [1] => event
    [2] => add_new_file.php
)

我想像

一样改变它
Array([controllers]=>[event]=>add_new_file.php)

是否有任何改变这样的想法,任何人都有想法改变这样的想法。

2 个答案:

答案 0 :(得分:6)

尝试:

$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)

答案 1 :(得分:1)

虽然array_reverse()和循环的组合将完成这些工作,但我发布的时间却很晚(请参阅此答案)。所以,这个答案只是一个笑话(因为我很好奇 - 是否有可能通过单行解决问题)

$rgData   = ['foo', 'bar', 'baz'];
eval('$rgResult["'.join('"]["', array_slice($rgData, 0, -1)).'"] = "'.array_pop($rgData).'";');
//var_dump($rgResult);

(通常,永远不要使用eval - 但这只是学术兴趣,仅此而已)