2014-09-11 92 views
1

enter image description herePHP - 带阵列的单选按钮

默认值是第一个单选按钮。
输出如下:1 => Y,2 => N,3 => N
好的,没问题。

现在我的问题是,我想单击第三个单选按钮。
预期的输出是这样的:1 => N,2 => N,3 =>ý
但我的输出是这样的:1 => N,2 => Y,3 =>ý
第二个应是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

当你选择中间的'N'时会发生什么,那么顺序是什么? – Ghost 2014-09-11 03:27:56

回答

1

您应该知道Web表单数据的工作方式。您当前的单选按钮:

<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 />'; 
     } 
    } 
?> 
+0

谢谢,ROX。我从你身上学到了很多东西。 – user3905044 2014-09-11 03:50:47

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.你的第二个项目在defaultkey数组中也是N,所以当你循环时,$ _POST ['choice'] == $ defaultkey [1]将在它到达$ defaultkey [2]之前返回true。

你必须重写你的PHP逻辑,我不太明白你想在你的代码中实现什么,所以我不能告诉你如何重写。

+0

好的,我重写了代码。 – user3905044 2014-09-11 04:03:38

+0

您可以使用@ROX建议的方法或使用输入数组(http://php.net/manual/en/faq.html.php#faq.html.arrays)。 这个问题没有固定的答案,你必须知道所有可能的选择,并选择一个更适合你现在的情况。 – Godzilla 2014-09-11 04:07:40