Php 将参数的嵌套数组传递给laravel请求对象

Php 将参数的嵌套数组传递给laravel请求对象,php,arrays,angularjs,laravel,laravel-5,Php,Arrays,Angularjs,Laravel,Laravel 5,我试图传递一个具有两个属性的params对象 身份证 阵列 通过$request对象访问属性。我得到的错误如下所示。我怎样才能做到这一点 角度: return $http({ method: 'GET', url: url + 'questions/check', cache: true, params: {

我试图传递一个具有两个属性的params对象

  • 身份证
  • 阵列
通过
$request
对象访问属性。我得到的错误如下所示。我怎样才能做到这一点

角度:

            return $http({
                method: 'GET',
                url: url + 'questions/check',
                cache: true,
                params: {
                    id: params.question_id, // 1
                    choices: params.answer_choices // [3, 2]
                }
            });
拉雷维尔:

    $input = $request->all();

    return $input; //output: {choices: "2", id: "1"}

    return $input['choices'];  //output: 2
显然,嵌套的
选项
数组(应该是
[3,2]
)没有通过这里

我还尝试了以下几种状态:

在处理带有“数组”输入的表单时,可以使用点表示法 访问阵列:

$input=Request::input('products.0.name')

我试过:

    $input = $request->input('choices.1'); //should get `2`

    return $input;
它什么也不返回


编辑:我可以判断选择数组发送时同时包含值3和2,但不确定如何从Laravel请求对象获取它们:

请求URI:
GET/api/questions/check?choices=3&choices=2&id=1http/1.1

答复来自:

    $input = $request->all();

    return $input;

您需要以与构建url格式表单请求相同的方式设置密钥

return $http({
    method: 'GET',
    url: url + 'questions/check',
    cache: true,
    params: {
        id: params.question_id, // 1
        "choices[]": params.answer_choices // [3, 2]
    }
});
然后服务器将接收您的请求,如
问题/检查?id=1&choices[]=3&choices[]=2


$http
服务将参数平坦化为查询字符串。出于某种原因,添加括号是不够明智的,因为服务器需要将查询字符串作为数组读取。

mm尝试在参数[{}]上添加[],然后访问输入[0]['choices']@melvnberd。我看不出这有什么帮助。另外,$http AJAX调用需要发送一个对象,而不是一个数组。您在浏览器开发工具网络的url中看到了什么?@charlietfl请参见上文