以递归方式向子数组添加元素

时间:2010-11-30 10:48:57

标签: php arrays

我正在尝试将元素添加到子数组的子数组中,并在上一次迭代中添加它们,即转换它:

$a = array('a', 'b', 'c');

进入这个:

$new_array = array(
    'a' => array(
        'b' => array(
            'c' => array()
        )
    )
);

3 个答案:

答案 0 :(得分:3)

$a = array('a', 'b', 'c');

$tmp = array_reverse($a);

$new_array = array();
foreach ($tmp as $item) { $new_array = array($item => $new_array); }

答案 1 :(得分:1)

function makeArrayChain($chain)
{
    $key = array_shift($chain);

    if ($key === NULL) {
        return array();
    } else {
        return array($key => makeArrayChain($chain));
    }
}

var_dump(makeArrayChain(array('a', 'b', 'c'));

array(1) {
  ["a"]=>
  array(1) {
    ["b"]=>
    array(1) {
      ["c"]=>
      array(0) {
      }
    }
  }
}

答案 2 :(得分:1)

与@aibs解决方案类似。

<?php

function splitIntoSubArray($array) {
  return $array ? array(array_shift($array) => splitIntoSubArray($array)) : array();
}

$a = array('a', 'b', 'c');

print_r(splitIntoSubArray($a));

<强>输出:

Array
(
    [a] => Array
        (
            [b] => Array
                (
                    [c] => Array
                        (
                        )

                )

        )

)