在一个表单中从具有相同名称的多个多选下拉列表中检索数据


retrieve data from multiple multi select dropdown with same name in one form

我正在尝试在一个页面和一个表单上处理多个具有相同名称的multi select框/下拉列表。它们具有相同的名称,因为这些下拉列表/框是动态添加的。我的问题是如何单独检索每个选择框的数据。它显示的结果如下所示:

Array(
        [0] => M
        [1] => T
        [2] => W 
 )

但我想要这样的结果

  Array
  (
     [0] => Array(
               [0] => M
               [2] => T
             )
     [1] => Array(
               [0] => W
             )
  )

我正在尝试以下代码:

  <td class="v-align-middle semi-bold sorting_1">
                            <div class="form-group form-group-default form-group-default-select2 full-width days" id="111">
                                    <label>SELECT DAYS</label>
                                    <select id="dw" name="days[]" class="full-width select2-offscreen" data-init-plugin="select2" multiple="" tabindex="-1">
                                        <option value="M">Monday</option>
                                        <option value="T">Tuesday</option>
                                        <option value="W">Wednesday</option>
                                        <option value="Th">Thursday</option>
                                        <option value="F">Friday</option>
                                        <option value="Sa">Saturday</option>
                                        <option value="Su">Sunday</option>
                                    </select>
                            </div> <br/>
                        </td>
                        <td>

这是我用来克隆表的代码:

   $('.add-ins').on('click', function(){
     var selfId = $(this).attr('id');
     var tId = $(this).parent().parent().find('table').attr('id');
     var lastId = $('.timings#'+tId+' tbody tr:visible:last').attr('id');
     lastId++;
     $('select').select2('destroy'); /* destroy select2 from select tag and then clone it */          
    var clonerow = $('.timings#'+tId+' tbody tr:visible:last').clone(true, true).attr('id', lastId);
    clonerow.appendTo('.timings#'+tId+' tbody');
    $('select').select2(); /* enable Select2 on the select elements */
});

PHP代码:

  $days = $_POST['days'];
  foreach($days as $value){
       echo $value; 
       foreach($value as $week){ 
     echo  $week; 
     }
  }

或者简单地说:

   print_r($days);

请在这方面帮助我。如果还有其他解决方案,例如为每个选择框使用不同的名称,请告诉我如何使用 php $_POST 发布它们,因为我无法弄清楚用户将添加多少个多选框。

您的建议将不胜感激。提前谢谢。

亲切问候

请像 html 一样编码

<select id="dw" name="days[0][]" class="full-width select2-offscreen" data-init-plugin="select2" multiple="" tabindex="-1">
 <option value="M">Monday</option>
 <option value="T">Tuesday</option>
 <option value="W">Wednesday</option>
 <option value="Th">Thursday</option>
 <option value="F">Friday</option>
 <option value="Sa">Saturday</option>
 <option value="Su">Sunday</option>
</select>
<select id="dw" name="days[1][]" class="full-width select2-offscreen" data-init-plugin="select2" multiple="" tabindex="-1">
 <option value="M">Monday</option>
 <option value="T">Tuesday</option>
 <option value="W">Wednesday</option>
 <option value="Th">Thursday</option>
 <option value="F">Friday</option>
 <option value="Sa">Saturday</option>
 <option value="Su">Sunday</option>
</select>

你应该像下面这样使用:

1:
<select id="dw" name="days[0][]" >
    <option value="M">Monday</option>
</select>
2:
<select id="dw" name="days[1][]" >
    <option value="M">Monday</option>
</select>

如果您使用javascript插入选择框,则采用变量来设置0/1/2...name选择。

开机自检数据:

Array
(
   [0] => Array(
            [0] => M
            [1] => T
          )
   [1] => Array(
            [0] => W
          )
)