【问题标题】:PhP Radio button in Array数组中的 PhP 单选按钮
【发布时间】:2014-07-06 20:16:55
【问题描述】:

我有一个表单,您可以在其中选择一个单选按钮,它应该将选择的内容传输到下一页。我的问题是,无论您选择哪个单选按钮,它总是将与最后一个单选按钮关联的值传递给您,而不是您选择的那个。

所以如果我选择环游世界,它会携带 5 而不是 10

我需要使用 GET 方法。

这是我的代码:

   $title = array("Around the World"=>"10","Coast to Coast"=>"7","The Big City"=>"5");

    foreach($title as $sub=>$s_value) {
        echo "$sub $$s_value";
        echo '<input type="radio" name="sub" value="', $sub,'">';
        echo "<br>";

    }

 if (empty($_GET["sub"])) {
} else {
    $sub = sub_input($_GET["sub"]);
}

if (empty($_GET["s_value"])) {
} else {
    $s_value = sub_input($_GET["s_value"]);
}

if (isset($title['sub'])){
    $valid=false;
}

这是下一页的代码:

echo "<b>$sub</b><br />";

echo "Base Total: $ $s_value/mon x $month months <br />";

是的,我省略了很多东西,因为我的代码中的其他一切都很好。

我也尝试过这样做,添加了一个 unset() 语句,但它不起作用。它完全删除了 value 变量....

$title = array("环游世界"=>"10","Coast to Coast"=>"7","The Big City"=>"5");

    foreach($title as $sub=>$s_value) {
        echo "$sub $$s_value";
        echo '<input type="radio" name="sub" value="', $sub,'">';
        echo "<br>";

    unset($s_value);
    }

//我也试过把未设置的放在这里//

 if (empty($_GET["sub"])) {
} else {
    $sub = sub_input($_GET["sub"]);
}

if (empty($_GET["s_value"])) {
} else {
    $s_value = sub_input($_GET["s_value"]);
}

if (isset($title['sub'])){
    $valid=false;
}

【问题讨论】:

  • 我是 PhP 的新手,但是在使用 foreach 循环时可以做到吗?
  • 您在一组中的单选按钮应该都具有相同的name 但不同的value,问题在于您在foreach 之外使用相同的变量,请参阅下面的答案。
  • Courtney 是正确的,我假设您有多个单选按钮组。

标签: php arrays foreach radio-button


【解决方案1】:

您需要在 foreach 循环中更改变量 $s$s_value 的名称。 foreach 循环正在设置这些变量,然后如果 GET 值中的任何一个为空,那么它们将在 foreach 循环之外被访问,这样就没有 GET 值来替换变量的内容。因此,它始终使用 5 作为值,因为这是您设置的最后一个 $s_value

总之,将 foreach 循环中的 $s$s_value 分别更改为 $key$value 将解决数组值的问题。或者,您可以在 foreach 循环之后但在 if 语句之前取消设置它们。

【讨论】:

  • 所以可以说我省略了 if (empty) statments 。我仍然有这个问题。
  • 不要省略 if 语句。您只需要更改 foreach 中的变量名称。
  • 对不起,我太密集了!我终于明白为什么它不起作用并且正在尝试解除它们!希望它有效!
  • 所以我尝试使用 unset($s_value);直接在循环内部和外部,它完全删除了值,但使用 unset($sub);给出了想要的效果。仍然没有通过 s_value。
【解决方案2】:

在您当前的代码中,您只是碰巧切换了循环中的值。 10, 7, 5 在元素内,而名称 Around The world... etc 在键内。你只需要切换它们。考虑这个例子:

<?php
$title = array("Around the World"=>"10","Coast to Coast"=>"7","The Big City"=>"5");

if(isset($_GET['submit'], $_GET['sub'])) {
    $sub = $_GET['sub'];
    $name = array_search($sub, $title);
    echo '<script>alert("You selected '.$name. ' => '.$sub.'");</script>';
}

?>

<form method="GET" action="index.php">
    <?php foreach($title as $key => $value): ?>
        <input type="radio" name="sub" value="<?php echo $value; ?>" /> <?php echo $key; ?> <br/>
    <?php endforeach; ?>
    <br/>
    <input type="submit" name="submit" value="Submit" />
</form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-11
    • 2011-01-21
    • 2014-01-24
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 2017-06-23
    相关资源
    最近更新 更多