从索引数组中获取多维数组的最佳方法

时间:2019-03-13 18:21:18

标签: php arrays

说我有一个字符串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);

0 个答案:

没有答案