【问题标题】:place form data in multiples array and save in json format将表单数据放在倍数数组中并以json格式保存
【发布时间】:2017-07-03 18:00:04
【问题描述】:

我有一个包含 3 页的表单,每个页面都有不同的字段 在我的控制器中,我能够以 json 格式制作数据,即

控制器代码

$input = $request->all();
        unset($input['_token']);
        unset($input['submit']);
        $form_attributes = json_encode($input);
        dd($form_attributes);

输出如下

    "{"name":"test","student":"yes","email":"test.student@gmail.com","format":"auto",
"lists":["1,2"],"class_lists":["2,5"],"status":"1"}"

我没有显示完整的表格,以便用小数据很容易理解

我想把上面写成

它的数组应该保存为一个主数组 Student 然后 page1 数组 page2 数组然后 page3 数组

应该是这样的

 "Student":[{"arraypage1":[{"name":"test","student":"yes","email":"student@gmail.com"}],
    "arraypage2":[{"format":"auto","lists":["1,2"]}],
    "arraypage3":[{"class_lists":["2,5"],"status":"1"}]]"

请帮我以上述格式编码这些数据 谢谢

【问题讨论】:

  • 你使用的是什么版本的 Laravel?
  • laravel 5.3 版
  • 仅供参考,但您可以使用$request->except('_token', 'submit') 而不是使用unset()

标签: php arrays json laravel


【解决方案1】:

您可以轻松构建所需格式的关联数组,然后json_encode() it:

$formattedOutput = Array(
    'student' => Array(
        'arraypage1' => Array(
            'name' => $input['name'],
            'student' => $input['student'],
            'email' => $input['email']
        ),
        'arraypage2' => Array(
            'format' => $input['format'],
            'lists' => $input['lists']
        ),
        'arraypage3' => Array(
            'class_lists' => $input['class_lists'],
            'status' => $input['status']
        )
    )
);

$form_attributes = json_encode($formattedOutput);

确切的键名可能不同,但你应该明白。

更新: 要获得方括号,您可以使用额外的Array() 包装:

$formattedOutput = Array(
    'student' => Array(
        Array('arraypage1' =>
            Array(
                Array(
                    'name' => $input['name'],
                    'student' => $input['student'],
                    'email' => $input['email']
                )
            )
        ),
        Array('arraypage2' =>
            Array(
                Array(
                    'format' => $input['format'],
                    'lists' => $input['lists']
                )
            )
        ),
        Array('arraypage3' =>
            Array(
                Array(
                    'class_lists' => $input['class_lists'],
                    'status' => $input['status']
                )
            )
        )
    )
);

查看这篇文章了解更多详情:no square bracket json array

【讨论】:

  • 先生,它看起来不错,但为什么方括号 [ ] 错过了
  • 我测试了 2 个数组,它是 "{"student":{"arraypage1":{"form_name":"test","double_optin":"on"},"arraypage2":{"thanks_email":"on","email":"dfsd"}}}",但它应该是 "{"student":[{"arraypage1":[{"form_name":"test","double_optin":"on"}],"arraypage2":[{"thanks_email":"on","email":"dfsd"}]}]}"
  • 要获得方括号,您需要用另一个Array() 换行。我会更新答案。
猜你喜欢
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 2016-10-23
相关资源
最近更新 更多