The string
$string = \'a.b.c.d\';
should create an array like
array(\'a\' => array(\'b\' => array( ....
I managed
This should work:
function create_array(&$arr,$string,$data){
$a=explode('.',$string);
$last=count($a)-1;
$p=&$arr;
foreach($a as $k=>$key){
if ($k==$last) {
$p[$key]=$data;
} else if (is_array($p)){
$p[$key]=array();
}
$p=&$p[$key];
}
}
It's still pretty unclear, but if you only want what you have asked for:
function convertToArray($string)
{
$pos = strpos($string, '.');
$key = substr($string, 0, $pos);
$result = array($key => array());
if ($pos === false) {
return array($string=>array());
} else {
$result[$key] = convertToArray(substr($string, ($pos+1)));
return $result;
}
}
var_dump(convertToArray('a.b.c.d'));
Will ouput:
array(1) {
["a"]=>
array(1) {
["b"]=>
array(1) {
["c"]=>
array(1) {
["d"]=>
array(0) {
}
}
}
}
}