设置未选中复选框php的值

时间:2015-10-22 23:34:57

标签: php checkbox

我有这个表格

<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,认为如果选中该框,它将覆盖该值,但似乎不是这种情况     

我不知道如何处理这种情况并使其与我的处理代码一起使用。

1 个答案:

答案 0 :(得分:2)

[]数组约定动态创建下一个索引,所以如果你有:

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" />

这将为您提供一个包含11个项目的$_POST['acts']数组,索引0-10,其值为12,具体取决于是否已选中。

另外,我不知道你在使用implode()explode()做了什么。如果您只是想重新索引数字键,请使用array_values($_POST['acts'])