初学php,遇到checkbox传值丢失的问题,折腾一上午未解决,现将问题简化如下:两个文件test.php语test2.phptest.php<html><head><title>test</title></head><body><?php
$testarr=array(array('A'=>'a','B'=>'b'),array('C'=>'c','D'=>'d'));print_r($testarr);
echo <<<EOT
<form method="post" action="test2.php">
<input type="checkbox" name="check[]" value="{$testarr[0]}" />
<input type="checkbox" name="check[]" value="{$testarr[1]}" />
<input type="submit" value="submit" />
</form>
EOT;?>
</body>
</html>
test2.php<?php
$arr=$_POST['check'];print_r($arr);
test.php中的$testarr二维数组,用checkbox传值之后出现问题:子数组内容丢失。
test2.php输出如下,子数组内容丢失:
Array ( [0] => Array [1] => Array )曾尝试使用序列化,未能解决,好像只能保存序列化之后字符串的前面一部分。求各位大侠帮助。
$testarr=array(array('A'=>'a','B'=>'b'),array('C'=>'c','D'=>'d'));print_r($testarr);
echo <<<EOT
<form method="post" action="test2.php">
<input type="checkbox" name="check[]" value="{$testarr[0]}" />
<input type="checkbox" name="check[]" value="{$testarr[1]}" />
<input type="submit" value="submit" />
</form>
EOT;?>
</body>
</html>
test2.php<?php
$arr=$_POST['check'];print_r($arr);
test.php中的$testarr二维数组,用checkbox传值之后出现问题:子数组内容丢失。
test2.php输出如下,子数组内容丢失:
Array ( [0] => Array [1] => Array )曾尝试使用序列化,未能解决,好像只能保存序列化之后字符串的前面一部分。求各位大侠帮助。
$testarr=array(array('A'=>'a','B'=>'b'),array('C'=>'c','D'=>'d'));print_r($_POST['check']);
?>
<form method="post" action="#">
<?php
foreach($testarr as $value){
foreach($value as $v){
?>
<input type="checkbox" name="check[]" value="<?php echo $v?>" />
<?php }
}
?>
<input type="submit" value="submit" />
</form>
</body>
</html>
我没用firefox。我觉得这个问题如果再编码的话是不是太复杂了?本来的问题出在哪里呢?
但是这种方案不就出现四个checkbox了么?
整体传递一个二维数组。
test.php:<html><head><title>test</title></head><body><?php$testarr=array('A'=>'a','B'=>'b','C'=>'c','D'=>'d');echo <<<EOT
<form method="post" action="test2.php">
<input type="checkbox" name="checkbox" value="${testarr}" />
<input type="submit" value="submit" />
</form>
EOT;?></body>
</html>test2.php<?php
$arr=$_POST['checkbox'];
print_r($arr);test2.php输出结果为:Array
$testarr=array(array('A'=>'a','B'=>'b'),array('C'=>'c','D'=>'d'));print_r($testarr);<form method="post" action="test2.php">
<input type="checkbox" name="check" value="{$testarr[0]}" />
<input type="checkbox" name="check" value="{$testarr[1]}" />
<input type="submit" value="submit" />
</form>
?>
</body>
</html>
<?php
$arr=$_POST['check'];print_r($arr);注意名称要一致,你给的代码使用的名称是 name="check[]",但是接收的却是checkcheck[]和check是不一样的
那应该怎么接收checkbox数组呢?