String with array structure to Array

algorithm, arrays, multidimensional-array, php, string

Solution

Given the values

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

Here's some code I have lying around that does what you need¹:

$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;

See it in action.

¹ Actually it does slightly more than that: it can be trivially encapsulated inside a function, and it is configurable on all three input values (you can pass in an array with existing values, and it will expand it as necessary).

Problem

I have string: ``` Main.Sub.SubOfSub ``` And some kind of data, may be a string: ``` SuperData ``` How I can transform it all to this array above? ``` Array ( [Main] => Array ( [Sub] => Array ( [SubOfSub] => SuperData ) ) ``` ) Thanks for help, PK

Original source

Related problems