【问题标题】:How can i merge 2 associative arrays [duplicate]我如何合并2个关联数组[重复]
【发布时间】:2020-05-14 20:49:46
【问题描述】:

我有多个动态创建的 HTML 输入的表单,这些数据是从我想使用 createMany() 方法存储在数据库中的输入中收集的,但目前只有来自“答案”输入的数据存储在数据库中。

一段时间后,我意识到对于createMany(),我需要将数据合并到一个数组中。但我不知道如何管理。如果有人可以帮助我,我将不胜感激。

blade.php

<div class="row justify-content-center">   
    <div class="col-lg-8">
        <div class="card">
            <div class="card-body">
              <h3 class="card-title">Create Question</h3>
                  <hr class="m-t-0 m-b-40">
                   {!! Form::model(array(), ['route' => ['question.store', $questionnaire->id], 'role' => 'form', 'class' => 'form-material m-t-40']) !!}
                    <div class="row">
                        <div class="col-md-12 col-lg-12 col-xl-12">
                        {!!($errors->has('question')) ? '<div class="form-group has-error">' : '<div class="form-group">'!!}
                          <label>{{trans('core::commander.question')}}</label>
                          {!! Form::text('question[question]', old('name'), array('class'=>'form-control')) !!}
                        </div>
                     </div>        
                   </div>             


                <h3 class="card-title">Create Answers</h3>
                <hr class="m-t-0 m-b-40">

                    <div id="example">
                       <div class="row" id="answer_field">
                        <div class="col-md-5 col-lg-5 col-xl-5">
                          <label>Answer</label>
                          {!! Form::text('answers[][answer]', old('name'), array('class'=>'form-control')) !!}
                          </div>

                        <div class="col-md-5 col-lg-5 col-xl-5">   
                          <label>Value:</label>
                           <input type="number" name="answer_value[][value]" min="0" max="10" class="form-control">
                        </div>   
                           <a class="btn btn-primary add_more_button">Add More Fields</a>

                        </div>
                     </div> 




                    <div class="col-md-6 col-lg-2 col-xl-2">
                      <button class="btn btn-block btn-default btn-md-6" type="submit" style="margin-top: 11%;"><i class="fa fa-check"></i> {{trans('core::commander.save')}}
                      </button>
                    {!! Form::close() !!} 
                  </div>
            </div>
        </div>
    </div>





@endsection  


@section('view-scripts')

<script>


   var i=1;  
      $('.add_more_button').click(function(){  
           i++;  


           $('#example').append('<div class="row" id="answer_field'+i+'"><div class="col-md-5 col-lg-5 col-xl-5"><label>Answer</label><input type="text" name="answers[][answer]" class="form-control"/></div><div class="col-md-5 col-lg-5 col-xl-5"><label>Value</label><input type="number" name="answer_value[][value]" min="0" max="10" class="form-control"/></div><a href="#" id="'+i+'" class="input_fields_container_part" style="margin-left:10px;">Remove</a></div></div>'); //add input field
      }); 
$(document).on('click', '.input_fields_container_part', function(){  
           var button_id = $(this).attr("id");   
           $('#answer_field'+button_id+'').remove();


      });  
</script>

控制器.php

 public function storeQuestion(Request $request, $id){

            $data= request()->all();




            $questionnaire=Questionnaire::with('questionnaireQuestions')->where('id', '=', $id)->first();
            $question=$questionnaire->questionnaireQuestions()->create($data['question']);
            $question->questionAnswers()->createMany($data['answers']);


             return view('questionnaire.questions.createQuestions')->with('questionnaire', $questionnaire);

      }  

阵列目标

array:4 [▼
      "_token" => "eRzBm87dqPbzOjN1I8k6lD1cttHhNbeEUL0HUTCQ"
      "question" => array:1 [▶]
      "answers" => array:2 [▼
        0 => array:1 [▼
          "answer" => "dasd"
        ]
        1 => array:1 [▼
          "answer" => "asda"
        ]
      ]
      "answer_value" => array:2 [▼
        0 => array:1 [▼
          "value" => "2"
        ]
        1 => array:1 [▼
          "value" => "3"
        ]
      ]
    ]


array:4 [▼
      "_token" => "eRzBm87dqPbzOjN1I8k6lD1cttHhNbeEUL0HUTCQ"
      "question" => array:1 [▶]
      "answers" => array:2 [▼
        0 => array:1 [▼
          "answer" => "dasd",
          "value" => "2"
        ]
        1 => array:1 [▼
          "answer" => "asda",
          "value" => "3"
        ]
      ]

    ]

【问题讨论】:

标签: php laravel


【解决方案1】:

你试过array_merge_recursive函数吗? https://www.php.net/manual/en/function.array-merge-recursive.php

更新。

你可以试试这个吗?

foreach($arr['answers'] as $key => $value){
    $arr['answers'][$key]['value'] = $arr['answer_value'][$key]['value'];
    unset($arr['answer_value'][$key]['value']);
}

【讨论】:

  • @Nenad,我不明白。您没有尝试或功能不起作用?
  • 这个函数的结果是:imgur.com/a/15OscnB,但我希望我的数组结构看起来像这里:imgur.com/a/tRsRpPw
  • 好的,我现在明白了。我误会你了。
  • @Nenad,你能更新你的答案并添加源数组的文本代码吗?
  • 我在数组的答案文本代码中发布了
【解决方案2】:

目前的数组结构

array:4 [▼
      "_token" => "eRzBm87dqPbzOjN1I8k6lD1cttHhNbeEUL0HUTCQ"
      "question" => array:1 [▶]
      "answers" => array:2 [▼
        0 => array:1 [▼
          "answer" => "dasd"
        ]
        1 => array:1 [▼
          "answer" => "asda"
        ]
      ]
      "answer_value" => array:2 [▼
        0 => array:1 [▼
          "value" => "2"
        ]
        1 => array:1 [▼
          "value" => "3"
        ]
      ]
    ]

array_merge_recursive 函数的结果是:

array:4 [▼
      0 => array:1 [▼
        "answer" => "dasd"
      ]
      1 => array:1 [▼
        "answer" => "asda"
      ]
      2 => array:1 [▼
        "value" => "2"
      ]
      3 => array:1 [▼
        "value" => "3"
      ]
    ]

但我希望我的数组结构看起来像这里:

"answers" => array:2 [▼
        0 => array:1 [▼
          "answer" => "dasd",
          "value" => "2"
        ]
        1 => array:1 [▼
          "answer" => "asda",
          "value" => "3"
        ]
      ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 2020-01-04
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2019-12-20
    • 2021-06-23
    • 1970-01-01
    相关资源
    最近更新 更多