我想从一个复选框中获取一个数组,每个记录有一个[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
)
)
请问,我该怎么办?
答案 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
)
)