我有一个用HTML编码的复选框,到目前为止一切正常,但我需要在复选框的name属性中传入一个数组。我知道将变量传递给name属性时很容易做到。但是对于阵列而言,它正在证明是一种诡计。
这是我的代码:
<?php // spit out rest of the list
$permiCheck = array();
foreach($pList as $value){
//go into array, get what is needed to pass into the name attribute
echo '<tr>';
echo '<td>';
echo $value['PName'];
echo '</td>';
//pass an array in
$permiCheck['Id'] = $value['Id'];
$permiCheck['ItemId'] = $value['ItemId'];
if($value['Id']!=null) {
?>
<td style="text-align:center;"> <input type="checkbox" checked="yes" name="<?php $permiCheck;?>" value="" id="change"></td>
完成此操作后,我打算通过POST方法检索数组中的内容以进行表单验证。
我知道如何做到这一点,非常感谢。
答案 0 :(得分:1)
对于变量:
<input type="checkbox" name="myVariable" />
对于数组:
<input type="checkbox" name="myArray[]" />
<input type="checkbox" name="myArray[]" />
<input type="checkbox" name="myArray[]" />
希望这能解决这个错误;)
答案 1 :(得分:1)
checkbox元素的名称必须是字符串,但您可以使用复选框作为数组。 即。
<input type="checkbox" name="checkboxName[]" value="1"/>
<input type="checkbox" name="checkboxName[]" value="2"/>
将返回
var_dump($_POST)
array
'checkboxName' =>
array
0 => int 1
1 => int 2
我不确定你要做什么,但也许你可以这样做
<td style="text-align:center;">
<input type="checkbox" checked="yes" name="<?=$permiCheck['ItemId']?>[]" value="<?=$permiCheck['Id']?>" id="change">
</td>
答案 2 :(得分:0)
实际上,您可以将数组作为值传递,这些甚至可以是多维的:
<?
$testarray = array('id'=> 1, 'value'=>"fifteen");
var_dump($_POST);
?>
<form method="post">
<input type="checkbox" checked="yes" name="permicheck[id1]" value="<?php print_r($testarray)?>" id="change">
<input type="checkbox" checked="yes" name="permicheck[id2]" value="<?php print_r($testarray)?>" id="change">
<input type="submit">
</form>
它产生HTML输出如下:
<form method="post">
<input type="checkbox" checked="yes" name="permicheck[id1]" value="Array
(
[id] => 1
[value] => fifteen
)
" id="change">
<input type="checkbox" checked="yes" name="permicheck[id2]" value="Array
(
[id] => 1
[value] => fifteen
)
" id="change">
<input type="submit">
</form>
$ _POST看起来像这样:
Array (
[permicheck] =>
Array (
[id1] =>
Array ( [id] => 1 [value] => fifteen )
[id2] =>
Array ( [id] => 1 [value] => fifteen )
)
)
但是,这样做会将您的信息暴露给外人,这通常很糟糕,因为它可能会让您受到网络攻击。我建议将这个数组存储在$ _SESSION中并使用这些复选框进行简单检查;如果那是不可能的,请考虑使用serialize()和一些加密,然后在收到$ _POST后解密+ unserialize()。它需要更多的工作,但更安全。