Create infinitely deep multidimensional array from string in PHP
arrays, php
Solution
This is probably what you are looking for:
#!/usr/bin/php
<?php
$config = array();
function set_config($key, $value) {
global $config;
if (FALSE=== ($levels=explode('/',$key)))
return;
$pointer = &$config;
for ($i=0; $i<sizeof($levels); $i++) {
if (!isset($pointer[$levels[$i]]))
$pointer[$levels[$i]]=array();
$pointer=&$pointer[$levels[$i]];
} // for
$pointer=$value;
} // set_config
set_config('db/yum/user','val');
set_config('db/yum/server','val2');
print_r($config);
?>
The output is:
Array
(
[db] => Array
(
[yum] => Array
(
[user] => val
[server] => val2
)
)
)
Problem
Possible Duplicate: String with array structure to Array I have a string "db/yum/user", and I'm trying to explode it so each element of / becomes a deeper dimension. So the direct method of creating the data variable would be ``` $config['db']['yum']['user'] = "val"; ``` My attempt so far: ``` $config = array(); function set_config($key,$value){ global $config; //Multi deminsional config $multi_configs = explode('/',$key); if($multi_configs!==false){ $build_up = array(); $c =& $build_up; foreach($multi_configs as $multi_config){ $c[$multi_config] = array(); $c =& $c[$multi_config]; } //$c = $value; array_merge($config,$c); return; } $config[$key] = $value; } set_config('db/yum/user','val'); set_config('db/yum/server','val2'); //etc,etc,etc, this was modified to make more sense in this context. ```