Установленное значение непроверенного флажка php

У меня есть эта форма

<tr> <td> <input type="hidden" name="po[]" value="<?php echo $ord['id'] ?>" /> <input type="hidden" name="acts[]" value="1" /> <input id="acts" value='2' type="checkbox" <?php echo $check ?> name="acts[]" /> </td> <td><img src="<?php echo $pnme['icon'] ?>" style="height: 25px; width: 25px; vertical-align: middle;" /><?php echo $pnme['name'] ?></td> <td><input id="per" style="background: #BDBDBD; width: 100px;" name="per[]" size="5" type="text" class="small" value="<?php echo $ord['fee'] ?>" /></td> <td><input id="dol" style="background: #BDBDBD; width: 100px;" name="dol[]" size="5" type="text" class="small" value="<?php echo $ord['cost'] ?>" /></td> </tr> 

Я пытаюсь получить его, чтобы передать другое значение, если флажок не установлен, у меня есть hidden ввод, но он не передает значения правильно там, где мне это нужно, когда в форме написано, что я обрабатываю информацию

  $po = implode(",", $_POST['po']); $po = explode(",", $po); $fee = implode(",", $_POST['per']); $fee = explode(",", $fee); $co = implode(",", $_POST['dol']); $co = explode(",", $co); $act = implode(",", $_POST['acts']); $act = explode(",", $act); print_r($act); for ($i = 0; ; $i++) { if ($i > count($po) - 1) { break; } 

например, если я проверяю каждый бокс, он устанавливает массив таким образом

 Array ( [0] => 1 [1] => 2 [2] => 1 [3] => 2 [4] => 1 [5] => 2 [6] => 1 [7] => 2 [8] => 1 [9] => 2 [10] => 1 [11] => 2 [12] => 1 [13] => 2 [14] => 1 [15] => 2 [16] => 1 [17] => 2 [18] => 1 [19] => 2 [20] => 1 [21] => 2 ) 

хотя хотя бы один из них должен иметь значение 2

Я добавил это, пытаясь установить начальное значение 1, думая, что если флажок установлен, он будет перезаписывать значение, но это, похоже, не так

Я не уверен, как справиться с этой ситуацией и заставить ее работать с моим кодом обработки.

В соглашении массива [] динамически создается следующий индекс, поэтому, если у вас есть:

 name="acts[]" name="acts[]" 

Затем вы получаете:

 acts[0] acts[1] 

Скрытые и флажковые входы с тем же именем, которые должны содержать проверочное и непроверенное значение, должны иметь одинаковый индекс, поэтому укажите:

 <input type="hidden" name="acts[0]" value="1" /> <input type="checkbox" name="acts[0]" value="2" /> <!-- more checkboxes --> <input type="hidden" name="acts[10]" value="1" /> <input type="checkbox" name="acts[10]" value="2" /> 

Это даст вам массив $_POST['acts'] с 11 элементами, индекс 0-10 со значением 1 или 2 зависимости от того, был ли он установлен или нет.

Кроме того, я не знаю, что вы делаете с implode() и explode() . Если вы просто пытаетесь перевернуть числовые ключи, используйте array_values($_POST['acts']) .