一尘不染

具有数组结构的字符串到数组

php

我有字符串:

Main.Sub.SubOfSub

某种数据可能是字符串:

SuperData

我如何将其全部转换为上述数组?

Array
(
[Main] => Array
    (
        [Sub] => Array
            (
                [SubOfSub] => SuperData
            )

    )

谢谢帮忙,PK


阅读 248

收藏
2020-05-26

共1个答案

一尘不染

给定值

$key = "Main.Sub.SubOfSub";
$target = array();
$value = "SuperData";

这里有一些我可以满足您需要的代码¹:

$path = explode('.', $key);
$root = &$target;

while(count($path) > 1) {
    $branch = array_shift($path);
    if (!isset($root[$branch])) {
        $root[$branch] = array();
    }

    $root = &$root[$branch];
}

$root[$path[0]] = $value;

¹实际上,它的作用还不止于此:它可以简单地封装在一个函数中,并且可以在所有三个输入值上进行配置(您可以将一个具有现有值的数组传递给它,并在必要时对其进行扩展)。

2020-05-26