php - 如何合并 2 个关联数组
问题描述
我有多个动态创建的 HTML 输入的表单,这些数据是从我想使用该createMany()
方法存储在数据库中的输入中收集的,但目前只有来自“答案”输入的数据存储在数据库中。
一段时间后,我意识到createMany()
我需要将数据合并到一个数组中。但我不知道如何管理。如果有人可以帮助我,我将不胜感激。
刀片.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"
]
]
]
解决方案
你试过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']);
}
推荐阅读
- python - Maya Python 脚本菜单对齐
- json - 谷歌操作 UnparseableJsonResponse
- python - 清单切割清单
- css - 如何从应用样式表中排除视频?
- linux - 使用 LLinux 的 Bash 命令
- asp.net-mvc - What does this code do? ASP.NET MVC
- java - 在线程“AWT-EventQueue-0”中获取异常 java.lang.ArrayIndexOutOfBoundsException: 0 >= 0 在 JTable 行删除中
- php - 如何在 php 文件周围包装 HTML 页眉和页脚?
- java - How to count button clicks with lambda expression?
- wpf - HorizontalAlignment or VerticalAlignment don't work as expected