php - Array Merge PHP不断创建子/维数组

标签 php arrays laravel array-merge

这几天我一直在努力解决这个问题。我一无所获。我的网站有一个选项可以选择您在学校学习的科目:前端部分效果很好,我可以将结果保存在我的表中 subjects 列中。

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

[
{
    "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;

关于php - Array Merge PHP不断创建子/维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48489984/

相关文章:

php - 使用 php 和 android 手机的短信网关

php - 使用时间戳 MySQL 按月解析 SQL 结果

javascript - ng-model 属性在数组中未定义

php - Corcel/Laravel Eloquent 模型获取多个 post_types 结果 | WordPress

PHP 与 Json + SQL

php - 切换 Wordpress 站点主机时没有图像

ios - 将 double 类型的数组元素相乘

php - 如果另一个字段为假,如何验证一个字段必须为真

php - 拉维尔 5.2 :How to display time like this?

php - 按数值排序平面关联数组,然后按非数字键