Laravel-从点表示法创建数组

时间:2018-09-09 17:49:17

标签: php laravel

我无法做到正确。如果我有这样的数组符号:

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

}

但是正如您所看到的,“如果条件”是相似的,并且它们重复出现,这取决于点的数量。我觉得我需要在这里使用递归函数,但是我不知道该怎么做。

0 个答案:

没有答案