说我有一个字符串a.b.c.d.e
,被.
炸开,得到了[a, b, c, d, e]
的数组。我想从中构建一个多维数组,每个字母代表一个“维度”。
我想要的是以下内容:
[
'a' => [
'b' => [
'c' => [
'd' => [
'e' => 'some_value'
]
]
]
]
];
我设法通过递归做到了这一点,但是我发现它“愚蠢”。考虑到我们确切知道应该走多少级的事实,这不是更明智的方法吗?
我做了
public static function buildMultidimensionalArray(array $keys, array &$array = [])
{
$key = array_shift($keys);
$array[$key] = [];
if (!empty($keys)) {
static::buildMultidimensionalArray($keys, $array[$key]);
} else {
$array[$key] = 'random_value';
}
return $array;
}
$string = 'a.b.c.d.e.f.g';
$keys = explode('.', $string);
$array = static::buildMultidimensionalArray($keys);
var_dump($array);