动态添加维度到 PHP 数组

在发布这个问题之前,我想了很多。

这个问题比其他任何问题都更具概念性。

从经典数组开始,我想将其动态转换为带有子树的多维度。

要清楚,从这里:

$array = ['my', 'unique', 'values', 'array', 'and', 'so', 'on', '...'];

对此:

Array(
    ['my'] =>
        ['unique'] =>
            ['values'] =>
                ['array'] =>
                    ['and'] =>
                        ['so'] =>
                            ['on']=>
                                ['...'] => [])

我所做的唯一尝试是“野蛮地”动态创建字符串并通过eval()命令传递它们。

我在这里写代码不是为了个人尊严。我承认这件事已经够糟糕了。内行人会明白...

我完全相信有正确的方法可以做到,但当然,如果我在这里,我不知道

最好的事物


互换的青春
浏览 226回答 3
3回答

慕桂英4014372

从头开始,以头结束:$length = sizeof($array);$value = [];for ($index = $length - 1; $index >= 0; $index--) {    $value = [        "{$array[$index]}" => $value    ];    unset($array[$index]);}$array[]=$value;

慕丝7291255

这使用引用来跟踪您当前正在向哪个元素添加数据,因此首先$add是根元素(通过将其设置为&$newArray)。每次添加一个新级别时,它都会将引用移动到这个新项目(使用&$add[$key])并重复该过程......$array = ['my', 'unique', 'values', 'array', 'and', 'so', 'on', '...'];$newArray = [];$add = &$newArray;foreach ( $array as $key )  {    $add[$key] = [];    $add = &$add[$key];}print_r($newArray);
打开App,查看更多内容
随时随地看视频慕课网APP