Php Laravel-从点符号创建数组
我不能把它做好。如果我有这样的数组表示法:Php Laravel-从点符号创建数组,php,laravel,Php,Laravel,我不能把它做好。如果我有这样的数组表示法: ['email', 'privacy.language', 'privacy.phonenr', 'privacy.user.id'] [ 0 => 'email', 'privacy' => [ 0 => 'language', 1 => 'phonenr', 'user' => [ 0 => 'id' ] ], ] protected f
['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;
}
我想得到一个如下所示的数组:
['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;
}
我目前的做法如下:
['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;
}
但正如你所看到的,“如果条件”是相似的,它们会重复,这取决于点的数量。我觉得我需要在这里使用递归函数,但我不知道如何使用 你想要的可能不正确。为什么?因为在laravel中,点表示法仅用于键,所以要使用
data\u set
设置这些键,并使用data\u get
获取。您试图做的是在最后一次使用值切换键moment@VladyslavStartsev很难解释为什么我需要这个,但我正在尝试向LaravelAPI资源添加一个函数。例如,当您说user=>newuserresource()
时,我想添加通常隐藏的额外字段。所以我这样称呼它:user=>(newuserresource())->makeVisible(['email','privacy.phonenr'])
。这样,我通过电子邮件获得结果用户,当关系隐私被加载时,我获得phonenr。我希望你能理解这一点。它非常有用:)