Laravel - Создать массив из точечной нотации - PullRequest
0 голосов
/ 09 сентября 2018

Я не могу сделать все правильно. Если у меня есть обозначение массива, как это:

['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;

}

Но, как вы видите, «если условия» похожи, и они повторяются, в зависимости от количества точек. Я чувствую, что мне нужно использовать рекурсивную функцию здесь, но я не знаю как.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...