数组合并 PHP 不断创建 Child/Dimensional 数组
Array Merge PHP keeps creating Child/Dimensional Array
这几天我一直在努力解决这个问题。我一无所获。我的网站有一个选项可以选择您在学校学习的科目:前端部分效果很好,我可以将结果保存在我的 table 列 subjects
.[=16 中=]
添加多个主题时会出现问题:它会为我添加的每个主题创建一个子主题。当添加了一些主题时,结果如下:
[
{
"subject": {
"level": "hl",
"subject": "mathematics"
}
},
[
{
"subject": {
"level": "hl",
"subject": "french"
}
},
[
{
"subject": {
"level": "hl",
"subject": "history"
}
}
]
]
]
如您所见,每次用户添加主题时,都会创建一个子项来保存之前添加的任何主题。我想要实现的是这样的:
[
{
"subject": {
"level": "hl",
"subject": "mathematics"
}
},
{
"subject": {
"level": "hl",
"subject": "french"
}
},
{
"subject": {
"level": "hl",
"subject": "history"
}
}
]
我用来合并两个数组的PHP代码如下:
//The user selected subject
$input = $request->only(['subject', 'level']);
//Make a user model
$user = Auth::user();
//Format for array
$add_subject['subject'] = [
'subject' => $input['subject'],
'level' => $input['level'],
];
//Get the subjects the user already has from the user model
$user_subjects = $user->subjects;
//Make the two arrays
$array1 = array($add_subject);
$array2 = array($user_subjects);
//Merge the two arrays
$merge = array_merge($array1, $array2);
//Save the array in database
$user->subjects = $merge;
$user->save();
基本上我的代码目前正在为每个主题创建一个数组。有什么办法可以防止它发生吗?
你的代码问题出在这里:
$array2 = array($user_subjects);
正如我猜测 $user_subjects 已经是一个数组,所以你正在将它变成一个内部有数组的数组。
另外,你真的不需要使用 array_merge
。这也应该有效:
$user_subjects[] = $add_subject;
只需这样做:
//The user selected subject
$input = $request->only(['subject', 'level']);
//Make a user model
$user = Auth::user();
// add item to user's subjects
$user->subjects[] = [
'subject' => $input['subject'],
'level' => $input['level'],
];
//Save the array in database
$user->save();
这几天我一直在努力解决这个问题。我一无所获。我的网站有一个选项可以选择您在学校学习的科目:前端部分效果很好,我可以将结果保存在我的 table 列 subjects
.[=16 中=]
添加多个主题时会出现问题:它会为我添加的每个主题创建一个子主题。当添加了一些主题时,结果如下:
[
{
"subject": {
"level": "hl",
"subject": "mathematics"
}
},
[
{
"subject": {
"level": "hl",
"subject": "french"
}
},
[
{
"subject": {
"level": "hl",
"subject": "history"
}
}
]
]
]
如您所见,每次用户添加主题时,都会创建一个子项来保存之前添加的任何主题。我想要实现的是这样的:
[
{
"subject": {
"level": "hl",
"subject": "mathematics"
}
},
{
"subject": {
"level": "hl",
"subject": "french"
}
},
{
"subject": {
"level": "hl",
"subject": "history"
}
}
]
我用来合并两个数组的PHP代码如下:
//The user selected subject
$input = $request->only(['subject', 'level']);
//Make a user model
$user = Auth::user();
//Format for array
$add_subject['subject'] = [
'subject' => $input['subject'],
'level' => $input['level'],
];
//Get the subjects the user already has from the user model
$user_subjects = $user->subjects;
//Make the two arrays
$array1 = array($add_subject);
$array2 = array($user_subjects);
//Merge the two arrays
$merge = array_merge($array1, $array2);
//Save the array in database
$user->subjects = $merge;
$user->save();
基本上我的代码目前正在为每个主题创建一个数组。有什么办法可以防止它发生吗?
你的代码问题出在这里:
$array2 = array($user_subjects);
正如我猜测 $user_subjects 已经是一个数组,所以你正在将它变成一个内部有数组的数组。
另外,你真的不需要使用 array_merge
。这也应该有效:
$user_subjects[] = $add_subject;
只需这样做:
//The user selected subject
$input = $request->only(['subject', 'level']);
//Make a user model
$user = Auth::user();
// add item to user's subjects
$user->subjects[] = [
'subject' => $input['subject'],
'level' => $input['level'],
];
//Save the array in database
$user->save();