Создать массив переменной длины из строки

Строка

$string = 'a.b.c.d';

должен создать массив как

array('a' => array('b' => array( ....

Мне удалось придумать это:

function create_array(&$arr, $string, $data){


  $parts = explode('.', $string);
  $key = array_shift($parts); // first key

  $new_arr = array();
  $have_empty_slot = false;

  if(!isset($arr[$key])){
    $arr[$key] = array();
    $have_empty_slot = true;
  }

  $new_arr = &$arr[$key];

  foreach($parts as $part){
    if(!isset($new_arr[$part])){
      $new_arr[$part] = array();
      $have_empty_slot = true;
    }

    $new_arr = &$new_arr[$part];
  }

  // last one
  if($have_empty_slot)
    $new_arr = $data;

}    


$arr = array('a' => array('aa' => array('aaa' => 555)), 'b' => 55);

create_array($arr, 'c.cc.dd', 4545); // <-- works

create_array($arr, 'a.aa.aa2', 33); // <-- works

create_array($arr, 'a.aa.aaa.aaaaaaa', 4545); // <-- connection closed by remote server lol



print_r($arr);

Поэтому, если я пытаюсь добавить новый элемент после последнего элемента существующего набора элементов, это соединение закрывается из-за ошибки удаленного сервера. Что с этим не так?

Ответы на вопрос(2)

Ваш ответ на вопрос