1) { $key = array_shift($keys); if (!isset($arr[$key]) || !is_array($arr[$key])) { $arr[$key] = []; } $arr = &$arr[$key]; } $arr[array_shift($keys)] = $value; } else { $arr[$key] = $value; } } /** * Deletes a $key and its value from the $arr * * @param array &$arr * @param string $key */ public static function delete(array &$arr, $key) { if (strpos($key, '.') !== false && ($keys = explode('.', $key)) && count($keys)) { while (count($keys) > 1) { $arr = &$arr[array_shift($keys)]; } unset($arr[array_shift($keys)]); } else { unset($arr[$key]); } } }