我有一个像:
这样的数组$indexes = array('a', 'b', 'c');
并希望将其转换为多维数组,如:
$array['a']['b']['c']
指数数量是动态的,我可以有2,3或更多。
我需要执行此转换,然后为此索引分配值。例如:
$array['a']['b']['c'] = 'My value';
我使用array_keys()和array_flip()尝试了一个逻辑,但它不起作用。欢迎任何帮助。
答案 0 :(得分:1)
使用这个
$array = array('a', 'b', 'c');
$arr = array();
$ref = &$arr;
foreach ($array as $key) {
$ref[$key] = array();
$ref = &$ref[$key];
}
$ref = $key;
$array = $arr;
答案 1 :(得分:1)
尝试迭代我会说:
<?php
$array = array('a', 'b', 'c');
$target = array();
$current = &$target;
foreach ($array as $k){
$current[$k] = array();
$current = &$current[$k];
}
$current = "Hello World";
echo "<pre>";
print_r($target);
echo "</pre>";
?>
输出:
Array
(
[a] => Array
(
[b] => Array
(
[c] => Hello World
)
)
)
答案 2 :(得分:0)
我得到了一个基于an answer posted by @JasonWoof的有趣解决方案,它简单而优雅。
$indexes = array('a', 'b', 'c');
$value = 'My value';
while ($indexes) {
$value = array(array_pop($indexes) => $value);
}
var_dump($value);
节目:
array(1) {
["a"]=>
array(1) {
["b"]=>
array(1) {
["c"]=>
string(8) "My value"
}
}
}
答案 3 :(得分:0)
递归方法
function multiDimArray(array $keys, $value) {
if (count($keys) == 0) {
return $value;
} else {
$key = array_shift($keys);
return array( $key => multiDimArray($keys, $value));
}
}
$multiDimArray = multiDimArray(array('a','b','c','d'), "Hello World!");