如何通过一个复选框获取多个值?

时间:2017-04-26 04:18:07

标签: php html arrays checkbox

我想从一个复选框中获取一个数组,每个记录有一个[id]和一个[date]。

这是我的实际HTML / PHP:

<input type="checkbox" name="collection[][id]" value="<?php echo $row['id']; ?>" />
<input type="hidden" name="collection[][date]" value="<?php echo date(Ymd); ?>" />

我明白了:

Array
(
    [0] => Array
        (
            [id] => 544826
        )

    [1] => Array
        (
            [date] => 20170426
        )

    [2] => Array
        (
            [id] => 608555
        )

    [3] => Array
        (
            [date] => 20170426
        )
)

我想这样:

Array
(
    [0] => Array
        (
            [id] => 544826
            [date] => 20170426
        )

    [1] => Array
        (
            [id] => 608555
            [date] => 20170426
        )
)

请问,我该怎么办?

4 个答案:

答案 0 :(得分:2)

你需要给same index,即id和日期的密钥,同时像这样推送值

<input type="checkbox" name="collection[<?php echo $row["id"]; ?>][id]" value="<?php echo $row["id"]; ?>" />
<input type="hidden" name="collection[<?php echo $row["id"]; ?>][date]" value="<?php echo date(Ymd); ?>" />

答案 1 :(得分:1)

根据您的评论,听起来您有一些JavaScript在提交之前处理数据。如果是这种情况,您可以向复选框添加数据属性。要使用您的示例,您可以将其称为data-valuetwo。

输入类型=&#34;复选框&#34;值=&#34; TESTUSER&#34;数据valuetwo =&#34; 1&#34;&GT;

然后,您的JavaScript可以使用getAttribute检索data-valuetwo属性中的值并适当地处理它。它可能看起来像这样:

var valuetwo = checkbox.getAttribute(&#34; data-valuetwo&#34;);

答案 2 :(得分:1)

为什么不使用ID作为复选框的索引?这样你只需要通过列表。即:

<input type="checkbox" name="collection[<?php echo $row['id']; ?>]" value="<?php echo date(Ymd); ?>" />

这样你就可以在收集中找到以下数组(对于勾选的数组):

$collection = [
'id1' => 'date1',
'id2' => 'date2',
...
]

更简单,更优雅。希望这有帮助

答案 3 :(得分:1)

只需复制粘贴此代码,我已对其进行了测试,这肯定会帮助您实现所需目标。

<form>
    <input type="checkbox" name="collection[<?php echo $row["id"]; ?>][id]" value="<?php echo $row["id"]; ?>" />
    <input type="hidden" name="collection[<?php echo $row["id"]; ?>][date]" value="<?php echo date(Ymd); ?>" />
    <input type="checkbox" name="collection[<?php echo $row["id"]; ?>][id]" value="<?php echo $row["id"]; ?>" />
    <input type="hidden" name="collection[<?php echo $row["id"]; ?>][date]" value="<?php echo date(Ymd); ?>" />
    <input type="submit">
</form>

<?php

print_r(array_values($_GET["collection"]));

<强>输出:

  Array
    (
        0 => Array
            (
                [id] => 10
                [date] => 20170426
            )

        1 => Array
            (
                [id] => 20
                [date] => 20170426
            )

    )