PHP:构建多维数组

时间:2011-11-03 18:15:20

标签: php multidimensional-array

我有一个这样的数组:

Array(
  'level1' => 'someval',
  'level2' => 'someotherval',
  'level3' => 'thirdval'
)

我想把它变成这个:

Array(
  'someval' => Array(
    'someotherval' => Array(
      'thirdval' => 1
    )
  )
)

显然我可以手工建立上面的例子,但我不知道会有多少级别。这个简单的例子似乎没用,但是会有更多的值,所以每个级别中都会有多个数组。

3 个答案:

答案 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)
      }
    }
  }
}