PHP - 带数组的单选按钮

时间:2014-09-11 03:25:24

标签: php html arrays

enter image description here

默认值是第一个单选按钮。
输出如下: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 />';
           }
       }
   }
}

我该如何解决?

2 个答案:

答案 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逻辑,我不太明白你想在代码中实现什么,所以我不能建议你如何重写。