Строка
$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);
Поэтому, если я пытаюсь добавить новый элемент после последнего элемента существующего набора элементов, это соединение закрывается из-за ошибки удаленного сервера.Что с ним не так?