JQuery克隆选择区域并将其全部传递给PHP数组


JQuery cloning of select areas and passing all to PHP Array

我需要通过post将一个表单的克隆区域添加到PHP,然后每个添加到一个数组。

我的代码
    <div class="input-main white_bg cloneneedsanalysis">
    <div class="action-input clone-needs-analysis">
    <div class="action-input-white-shorter">
    <div class="inner-sub-title-less-padding">
    <p>Audience Analysis</p>
    </div>
    <div class="col-md-12">
    <div class="form-group">
    <select class="select2 select2-multiple" multiple="multiple" data-placeholder="Choose ..." name="needs_analysis[]">
    <option value="">-- Choose Audience Categories --</option>
    <option value="536"> Finance -  - Cash collection </option>
    <option value="537"> IT -  - Comms IT </option>
    <option value="538"> Strategy -  - Strategy team 1 </option>
    </select>
    </div>
    </div>
    </div>
    <div class="action-input-plus-needs-analysis">  </div>
    <div class="action-input-remove-needs-analysis"> </div>
    </div>
    </div>

克隆工作,但当我通过POST发送到PHP时,它将只捕获最后一个,因为它们都被称为称为needs_analysis[]

那么,在克隆时,我如何编辑名称使其不同,以及如何让PHP循环遍历每个数组?

我的JQuery;

$(document).on('click', '.clone_needs_analysis_button', function(e) {
e.preventDefault();
$(this).closest('.clone-needs-analysis').clone().insertAfter('.cloneneedsanalysis:last');
$(this).closest('.action-input-plus').hide();
$(this).closest('.action-input-remove').removeClass('hidden');

我的PHP;

$needs_analysis = array();
foreach ($_POST['needs_analysis'] as $key => $value) {
    $needs_analysis[$key]['audience_id'] = $value;
    $needs_analysis[$key]['created'] = $_POST['updated'];
    $needs_analysis[$key]['created_by'] = $_POST['updated_by'];
    $needs_analysis[$key]['solution_id'] = $_POST['solution_id'];
}
foreach ($needs_analysis as $needs_analysis_insert) {
$db->insert('design_needs_analysis', $needs_analysis_insert);
}

你的多选区名称应该是这样的:

needs_analysis[1][]
needs_analysis[2][]

您可以在服务器端生成页面时执行此操作,也可以在JavaScript:

中重命名它们。
$('[name="needs_analysis[]"]').each(function(index) {
    var currentElement = $(this)
    currentElement.attr('name', 'needs_analysis['+index+'][]')
})

为了循环遍历PHP中的值,您可以这样做:

foreach ($_POST['needs_analysis'] as $k=>$v) {
    //$v represents the value array for a select element
    foreach ($v as $k2=>$v2) {
        //do something with each value
    }
}