Я не могу сделать все правильно. Если у меня есть обозначение массива, как это:
['email', 'privacy.language', 'privacy.phonenr', 'privacy.user.id']
Я хотел бы получить массив, который выглядит следующим образом:
[
0 => 'email',
'privacy' => [
0 => 'language',
1 => 'phonenr',
'user' => [
0 => 'id'
]
],
]
Мой текущий подход выглядит так:
protected function undotArray(array $fields)
{
$array = [];
foreach ($fields as $key => $field) {
$keys = explode('.', $field);
if(count($keys) == 1){
$array[] = $keys[0];
continue;
}
if(count($keys) == 2){
$array[$keys[0]][] = $keys[1];
continue;
}
if(count($keys) == 3){
$array[$keys[0]][$keys[1]][] = $keys[2];
}
}
return $array;
}
Но, как вы видите, «если условия» похожи, и они повторяются, в зависимости от количества точек. Я чувствую, что мне нужно использовать рекурсивную функцию здесь, но я не знаю как.