我怎样才能将收音机组合在一起并仍然通过 $_POST 作为数组传递它们?

How can I group radio together and still pass them through $_POST as an array?

短版: 我知道如何将输入值作为数组传递以及如何在不同的单选按钮组之间进行划分,但我不确定如何一起做,因为我使用 name 属性 来做两个。

长版: 我想将一堆选择传递给 PHP 后端。使用基本 HTML,一组输入可以作为单个数组传递。我使用 name 属性执行此操作:

<input type="checkbox" name="choices[]">

这很好,因为我可以简单地查看 choices 的列表并处理数组中的任何内容,而不是检查可能选择的无数不同名称的输入。

我们还使用基本的 HTML 将单选按钮组合在一起。所以我们可以为 "Male/Female" 和 "Old Member/New Member" 设置一组单选按钮并且它们不会冲突(意思是,你只能选择 男性或女性以及 either new/old 成员……该页面不会强制从所有 4 个中选择一个)。我使用 name 属性执行此操作:

<input type="radio" name="sex">Male
<input type="radio" name="sex">Female
<input type="radio" name="membership">Old Member
<input type="radio" name="membership">New Member

所以我的问题是,如何同时执行这两项操作?我需要单独的 'groups' 单选按钮,但仍想将所有内容作为数组传递,但问题是我对两者都使用了 name 属性!如果我将它命名为数组名,我就无法区分单选组。如果我区分,我会丢失数组......

您可以在操作页面设置数组,

在PHP

<?php
    $join = array($_POST['sex'],$_POST['membership']);
?>

也可以根据上面的数组进行处理

所以我最终使用的方法是通过 $_POST 查找数组然后合并它们。 (显然,这仅在您知道 $_POST 中的唯一数组是您需要的类型时才有效……)。这大致是我的 PHP:

    $firstElem = true;
    foreach ($_POST as $element){           
        if( is_array($element) ){
            if($firstElem){
                $firstElem = false;
                $members = $element;
            }else{
                $members = array_merge($members, $element);
            }
        }
    }