默认值是第一个单选按钮。
输出如下:1 => Y,2 => N,3 => N
好的,没问题。
现在我的问题是,我想点击第三个单选按钮
像这样的预期输出:1 => N,2 => N,3 => Y
但我的输出如下:1 => N,2 => Y,3 => Y
第二个应该是N,而不是Y.
这是我的代码:
<html>
<body>
<form action="test.php" method="post">
<?php
$defaultkey = array("Y","N","N");
for($i = 1; $i <= count($defaultkey); $i++)
{
?>
<input type="radio" name="choice" value="<?php echo $defaultkey[$i-1]; ?>"><?php echo $defaultkey[$i-1];?><br />
<?php
}
?>
<input type="submit" name="submit" value="OK" />
</form>
</body>
</html>
<?php
if(isset($_POST['submit']))
{
if($_POST['choice']=="Y")
{
for($j = 1; $j <=count($defaultkey); $j++)
{
echo ($j). '=>' .$defaultkey[$j-1]. '<br />';
}
}
else if($_POST['choice']=="N")
{
for($k = 1; $k <=count($defaultkey); $k++)
{
if($_POST['choice']==$defaultkey[$k-1])
{
$defaultkey[$k-1] = "Y";
echo ($k). '=>' .$defaultkey[$k-1]. '<br />';
}
else
{
$defaultkey[$k-1] = "N";
echo ($k). '=>' .$defaultkey[$k-1]. '<br />';
}
}
}
}
我该如何解决?
答案 0 :(得分:1)
您应该知道网络表单数据的工作原理。您当前的单选按钮是:
<input type="radio" name="choice" value="Y">Y
<input type="radio" name="choice" value="N">N
<input type="radio" name="choice" value="N">N
所以无法找出选择的单选按钮(1,2或3)。尝试更改它们的值:
<?php
$defaultkey = array("Y","N","N");
for($i = 1; $i <= count($defaultkey); $i++)
{
?>
<input type="radio" name="choice" value="<?php echo $i; ?>"><?php echo $defaultkey[$i-1];?><br />
<?php
}
?>
产生这个:
<input type="radio" name="choice" value="1">Y
<input type="radio" name="choice" value="2">N
<input type="radio" name="choice" value="3">N
在你的提交中:
<?php
if(isset($_POST['submit'])) {
for ($i = 1; $i <= count($defaultkey); $i++) {
echo $i . ' => ' . ($_POST['choice'] == $i ? 'Y' : 'N') . '<br />';
}
}
?>
答案 1 :(得分:0)
问题在于:
for($k = 1; $k <=count($defaultkey); $k++)
{
if($_POST['choice']==$defaultkey[$k-1])
{
$defaultkey[$k-1] = "Y";
echo ($k). '=>' .$defaultkey[$k-1]. '<br />';
}
else
{
$defaultkey[$k-1] = "N";
echo ($k). '=>' .$defaultkey[$k-1]. '<br />';
}
}
当你检查最后一个单选按钮时,你的选择是N.默认密钥数组中的第二项也是N,所以当你循环时,$ _POST ['choice'] == $ defaultkey [1]将返回true之前它到达$ defaultkey [2]。
你必须重写你的php逻辑,我不太明白你想在代码中实现什么,所以我不能建议你如何重写。