数组合并PHP不断创建子/维度数组

数组合并PHP不断创建子/维度数组,php,arrays,laravel,array-merge,Php,Arrays,Laravel,Array Merge,这几天我一直在努力解决这个问题。这件事我一事无成。我的网站提供了一个选项,可以选择你在学校学习的科目:前端部分效果很好,我可以将结果保存在我的表格中的科目列中 添加多个主题时会出现问题:它会为我添加的每个主题创建一个子主题。当添加一些主题时,结果如下: [ { "subject": { "level": "hl", "subject": "mathematics" } }, [ { "subject": {

这几天我一直在努力解决这个问题。这件事我一事无成。我的网站提供了一个选项,可以选择你在学校学习的科目:前端部分效果很好,我可以将结果保存在我的表格中的
科目
列中

添加多个主题时会出现问题:它会为我添加的每个主题创建一个子主题。当添加一些主题时,结果如下:

[
{
    "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\u 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();