PHP – группа флажков

У меня есть группа флажков в одной форме, которую мне нужно отправить.

<input type="checkbox" value="true" checked name="chk0[]"> <input type="checkbox" value="false" name="chk0[]"> <input type="checkbox" value="false" name="chk0[]"> <input type="checkbox" value="true" checked name="chk0[]"> <input type="checkbox" value="true" checked name="chk1[]"> <input type="checkbox" value="false" name="chk1[]"> <input type="checkbox" value="true" checked name="chk1[]"> <input type="checkbox" value="false" name="chk1[]"> 

Обратите внимание, что в первой группе проверяются 1 и 4. Во второй группе проверяются 1 и 3. Когда я отправляю это сообщение, я получаю опубликованные значения для отмеченных флажков последовательно:

 [chk0] => Array ( [0] => true [1] => true ) [chk1] => Array ( [0] => true [1] => true ) 

Как я могу удостовериться, что получаю опубликованные значения следующим образом:

 [chk0] => Array ( [0] => true [3] => true ) [chk1] => Array ( [0] => true [2] => true ) 

Я хотел знать ключи проверенных флажков вместо того, чтобы показывать мне последовательно.

благодаря

 <input type="checkbox" value="true" checked name="chk0[0]"> <input type="checkbox" value="false" name="chk0[1]"> <input type="checkbox" value="false" name="chk0[2]"> <input type="checkbox" value="true" checked name="chk0[3]"> <input type="checkbox" value="true" checked name="chk1[0]"> <input type="checkbox" value="false" name="chk1[1]"> <input type="checkbox" value="true" checked name="chk1[2]"> <input type="checkbox" value="false" name="chk1[3]"> 

Смотрите, что я имею в виду?
<input name="chk0[1]" ...> работают так же, как элементы массива внутри PHP. Вы можете указать индексы и они будут переданы как-есть в PHP как $_POST['chk0'][1] элементы.

Я согласен с ответом 1, но проблема в том, что я использую родительский флажок для переключения флажков подкатегорий. Если я иду с chk0 [0], chk0 [1] и т. Д., Функция toggleParentCheckboxes не работает … Пожалуйста, взгляните на это:

 <html> <head> <script src="http://www.google.com/jsapi"></script> <script> google.load("jquery", "1.3.2"); google.load("jqueryui", "1.7.2"); </script> <script language="JavaScript"> function toggleTableRows() { $(document).ready(function() { $('img.parent') .css("cursor","pointer") .toggle( function() { $(this).attr("title","Click to Collapse") $(this).attr("src","arrow_expanded.gif"); $('tr').siblings('#child-'+this.id).toggle(); }, function() { $(this).attr("title","Click to Expand"); $(this).attr("src","arrow_collapsed.gif"); $('tr').siblings('#child-'+this.id).toggle(); } ); initCheckBoxes(); }); } function toggleCheckboxes(current, form, field) { $("#"+ form +" :checkbox[name='"+ field +"[]']").attr("checked", current.checked); } function toggleParentCheckboxes(current, form) { var checked = ($("#"+ form +" :checkbox[name='"+ current.name +"']").length == $("#"+ form +" :checkbox[name='"+ current.name +"']:checked").length); $("#"+ form +" :checkbox[name='"+ current.name.replace("[]", "") +"']").attr("checked", checked); } function initCheckBoxes() { $("#frmDinnerMenu :checkbox:checked").each(function() { if (this.name.replace(/[0-9]/g, "") == "chk[]") { toggleParentCheckboxes(this, "frmDinnerMenu"); } }); } </script> <script language="JavaScript">toggleTableRows();</script> </head> <body> <form name="frmDinnerMenu" id="frmDinnerMenu" method="POST" action=""> <table border=1> <tr> <td><img class="parent" id="0" src="arrow_collapsed.gif" title="Click to Expand">Category - Fruits</td> <td><input type="checkbox" name="chk0" onclick="toggleCheckboxes(this, 'frmDinnerMenu', 'chk0');"/></td> </tr> <tr style="display: none;" id="child-0"> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Apple</td> <td><input type="checkbox" value="0" name="chk0[0]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td> </tr> <tr style="display: none;" id="child-0"> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Banana</td> <td><input type="checkbox" checked value="0" name="chk0[1]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td> </tr> <tr style="display: none;" id="child-0"> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Orange</td> <td><input type="checkbox" checked value="0" name="chk0[2]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td> </tr> <tr><td><img class="parent" id="1" src="arrow_collapsed.gif" title="Click to Expand">Category - Vegetables</td><td><input type="checkbox" name="chk1" onclick="toggleCheckboxes(this, 'frmDinnerMenu', 'chk1');"/></td></tr> <tr style="display: none;" id=child-1><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cabbage</td><td><input type="checkbox" checked value="0" name="chk1[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-1><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tomatoes</td><td><input type="checkbox" checked value="0" name="chk1[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-1><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Green Peppers</td><td><input type="checkbox" checked value="0" name="chk1[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr><td><img class="parent" id="2" src="arrow_collapsed.gif" title="Click to Expand">Category - Dessert</td><td><input type="checkbox" name="chk2" onclick="toggleCheckboxes(this, 'frmDinnerMenu', 'chk2');"/></td></tr> <tr style="display: none;" id=child-2><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ice Cream</td><td><input type="checkbox" checked value="0" name="chk2[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-2><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Custard</td><td><input type="checkbox" checked value="0" name="chk2[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-2><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chocolate Cake</td><td><input type="checkbox" checked value="0" name="chk2[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> </table> </form> </body> </html> и <html> <head> <script src="http://www.google.com/jsapi"></script> <script> google.load("jquery", "1.3.2"); google.load("jqueryui", "1.7.2"); </script> <script language="JavaScript"> function toggleTableRows() { $(document).ready(function() { $('img.parent') .css("cursor","pointer") .toggle( function() { $(this).attr("title","Click to Collapse") $(this).attr("src","arrow_expanded.gif"); $('tr').siblings('#child-'+this.id).toggle(); }, function() { $(this).attr("title","Click to Expand"); $(this).attr("src","arrow_collapsed.gif"); $('tr').siblings('#child-'+this.id).toggle(); } ); initCheckBoxes(); }); } function toggleCheckboxes(current, form, field) { $("#"+ form +" :checkbox[name='"+ field +"[]']").attr("checked", current.checked); } function toggleParentCheckboxes(current, form) { var checked = ($("#"+ form +" :checkbox[name='"+ current.name +"']").length == $("#"+ form +" :checkbox[name='"+ current.name +"']:checked").length); $("#"+ form +" :checkbox[name='"+ current.name.replace("[]", "") +"']").attr("checked", checked); } function initCheckBoxes() { $("#frmDinnerMenu :checkbox:checked").each(function() { if (this.name.replace(/[0-9]/g, "") == "chk[]") { toggleParentCheckboxes(this, "frmDinnerMenu"); } }); } </script> <script language="JavaScript">toggleTableRows();</script> </head> <body> <form name="frmDinnerMenu" id="frmDinnerMenu" method="POST" action=""> <table border=1> <tr> <td><img class="parent" id="0" src="arrow_collapsed.gif" title="Click to Expand">Category - Fruits</td> <td><input type="checkbox" name="chk0" onclick="toggleCheckboxes(this, 'frmDinnerMenu', 'chk0');"/></td> </tr> <tr style="display: none;" id="child-0"> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Apple</td> <td><input type="checkbox" value="0" name="chk0[0]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td> </tr> <tr style="display: none;" id="child-0"> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Banana</td> <td><input type="checkbox" checked value="0" name="chk0[1]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td> </tr> <tr style="display: none;" id="child-0"> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Orange</td> <td><input type="checkbox" checked value="0" name="chk0[2]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td> </tr> <tr><td><img class="parent" id="1" src="arrow_collapsed.gif" title="Click to Expand">Category - Vegetables</td><td><input type="checkbox" name="chk1" onclick="toggleCheckboxes(this, 'frmDinnerMenu', 'chk1');"/></td></tr> <tr style="display: none;" id=child-1><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cabbage</td><td><input type="checkbox" checked value="0" name="chk1[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-1><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tomatoes</td><td><input type="checkbox" checked value="0" name="chk1[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-1><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Green Peppers</td><td><input type="checkbox" checked value="0" name="chk1[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr><td><img class="parent" id="2" src="arrow_collapsed.gif" title="Click to Expand">Category - Dessert</td><td><input type="checkbox" name="chk2" onclick="toggleCheckboxes(this, 'frmDinnerMenu', 'chk2');"/></td></tr> <tr style="display: none;" id=child-2><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ice Cream</td><td><input type="checkbox" checked value="0" name="chk2[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-2><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Custard</td><td><input type="checkbox" checked value="0" name="chk2[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-2><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chocolate Cake</td><td><input type="checkbox" checked value="0" name="chk2[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> </table> </form> </body> </html> и <html> <head> <script src="http://www.google.com/jsapi"></script> <script> google.load("jquery", "1.3.2"); google.load("jqueryui", "1.7.2"); </script> <script language="JavaScript"> function toggleTableRows() { $(document).ready(function() { $('img.parent') .css("cursor","pointer") .toggle( function() { $(this).attr("title","Click to Collapse") $(this).attr("src","arrow_expanded.gif"); $('tr').siblings('#child-'+this.id).toggle(); }, function() { $(this).attr("title","Click to Expand"); $(this).attr("src","arrow_collapsed.gif"); $('tr').siblings('#child-'+this.id).toggle(); } ); initCheckBoxes(); }); } function toggleCheckboxes(current, form, field) { $("#"+ form +" :checkbox[name='"+ field +"[]']").attr("checked", current.checked); } function toggleParentCheckboxes(current, form) { var checked = ($("#"+ form +" :checkbox[name='"+ current.name +"']").length == $("#"+ form +" :checkbox[name='"+ current.name +"']:checked").length); $("#"+ form +" :checkbox[name='"+ current.name.replace("[]", "") +"']").attr("checked", checked); } function initCheckBoxes() { $("#frmDinnerMenu :checkbox:checked").each(function() { if (this.name.replace(/[0-9]/g, "") == "chk[]") { toggleParentCheckboxes(this, "frmDinnerMenu"); } }); } </script> <script language="JavaScript">toggleTableRows();</script> </head> <body> <form name="frmDinnerMenu" id="frmDinnerMenu" method="POST" action=""> <table border=1> <tr> <td><img class="parent" id="0" src="arrow_collapsed.gif" title="Click to Expand">Category - Fruits</td> <td><input type="checkbox" name="chk0" onclick="toggleCheckboxes(this, 'frmDinnerMenu', 'chk0');"/></td> </tr> <tr style="display: none;" id="child-0"> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Apple</td> <td><input type="checkbox" value="0" name="chk0[0]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td> </tr> <tr style="display: none;" id="child-0"> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Banana</td> <td><input type="checkbox" checked value="0" name="chk0[1]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td> </tr> <tr style="display: none;" id="child-0"> <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Orange</td> <td><input type="checkbox" checked value="0" name="chk0[2]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td> </tr> <tr><td><img class="parent" id="1" src="arrow_collapsed.gif" title="Click to Expand">Category - Vegetables</td><td><input type="checkbox" name="chk1" onclick="toggleCheckboxes(this, 'frmDinnerMenu', 'chk1');"/></td></tr> <tr style="display: none;" id=child-1><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cabbage</td><td><input type="checkbox" checked value="0" name="chk1[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-1><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tomatoes</td><td><input type="checkbox" checked value="0" name="chk1[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-1><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Green Peppers</td><td><input type="checkbox" checked value="0" name="chk1[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr><td><img class="parent" id="2" src="arrow_collapsed.gif" title="Click to Expand">Category - Dessert</td><td><input type="checkbox" name="chk2" onclick="toggleCheckboxes(this, 'frmDinnerMenu', 'chk2');"/></td></tr> <tr style="display: none;" id=child-2><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ice Cream</td><td><input type="checkbox" checked value="0" name="chk2[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-2><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Custard</td><td><input type="checkbox" checked value="0" name="chk2[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> <tr style="display: none;" id=child-2><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chocolate Cake</td><td><input type="checkbox" checked value="0" name="chk2[]" onclick="toggleParentCheckboxes(this, 'frmDinnerMenu');"/></td></tr> </table> </form> </body> </html> 

Как я могу это исправить, поэтому работа переключения, а также пост-переменные – это то, что я хотел.

благодаря

Явно предоставляю вам ключи.

 <input type="checkbox" value="true" checked name="chk0[0]"> <input type="checkbox" value="false" name="chk0[1]"> <input type="checkbox" value="false" name="chk0[2]"> <input type="checkbox" value="true" checked name="chk0[3]"> <input type="checkbox" value="true" checked name="chk1[0]"> <input type="checkbox" value="false" name="chk1[1]"> <input type="checkbox" value="true" checked name="chk1[2]"> <input type="checkbox" value="false" name="chk1[3]"> 

Я бы предложил привести их в один массив, а не два разных:

 <input type="checkbox" value="true" name="chk[0][0]" checked> <input type="checkbox" value="false" name="chk[0][1]"> <input type="checkbox" value="false" name="chk[0][2]"> <input type="checkbox" value="true" name="chk[0][3]" checked> <input type="checkbox" value="true" name="chk[1][0]" checked> <input type="checkbox" value="false" name="chk[1][1]"> <input type="checkbox" value="true" name="chk[1][2]" checked> <input type="checkbox" value="false" name="chk[1][3]"> 

Производя следующий вывод:

 Array ( [chk] => Array ( [0] => Array ( [0] => true [3] => true ) [1] => Array ( [0] => true [2] => true ) ) ) 

используйте ключ в названии флажка, как в name="chk[3]" вместо name="chk[]"