首页 > 解决方案 > 无法针对复选框获取正确的值

问题描述

如图所示,我有一个针对每个复选框的名称和年龄值的表单。

在此处输入图像描述

问题是,即使未选中复选框但填充了该复选框的输入值,它也会进入后端。我希望如果未选中该复选框,那么即使输入文本已填充名称和年龄的值也不应转到后端如果选中该复选框,则年龄和姓名的值仅应转到后端

<form method="POST" action="savedata.php">
    <tr>
        <td>
            <input name="checkbox_value[]" type="checkbox" data-id="<?php echo $id; ?>" >
        </td>
        <td>
            <input type="text" name="child_name[]" placeholder="Name" data-id="<?php echo $id; ?>" value="<?php echo $child_name; ?>">
        </td>
        <td>
            <input type="text" id="age" name="child_age[]" class="child-age" placeholder="Age" data-id="<?php echo $id; ?>" value="<?php echo $child_age; ?>">
        </td>
    </tr>
</form>

在使用 savedata.php 获取数据时

print_r($_POST);

我得到以下数组

Array
(
    [checkbox_value] => Array
        (
            [0] => on
            [1] => on
        )
    [child_name] => Array
        (
            [0] => child 1
            [1] => child 2
            [2] => child 3
        )
    [child_age] => Array
        (
            [0] => 4
            [1] => 6
            [2] => 10
        )
)

我想要的结果数组是

Array
(
    [checkbox_value] => Array
        (
            [0] => on
            [1] => on
        )
    [child_name] => Array
        (
            [0] => child 1
            [1] => child 2
        )
    [child_age] => Array
        (
            [0] => 4
            [1] => 6
        )
)

如果有人能告诉如何解决这个问题,如果这不可能,那么是否可以检查 checkbox_value 是否有 2 个值,那么我可以从 child_name 和 child_age 数组中选择 2 个值

标签: phphtmlarraysformscheckbox

解决方案


您可以通过测试是否激活复选框来处理答案,如下所示:

if (isset([checkbox_value][0]))

然后,您可以将数据放入具有所需结构的新数组中(即您的第二个示例)


推荐阅读