如何将无线电组合在一起并仍将它们作为数组传递给$ _POST?

时间:2015-03-26 04:05:56

标签: php html arrays radio-button

短版本: 我知道如何将输入值作为数组传递以及如何在不同的单选按钮组之间进行描述,但我不知道如何一起执行它,因为我使用name属性来执行这两项操作。

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

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

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

我们还使用基本HTML将单选按钮组合在一起。所以我们可以为“男/女”以及“老会员/新会员”设置一组单选按钮,而不是让他们发生冲突(意思是,您只能选择 男性或女性以及 新/旧成员...页面不会强制所有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

所以我的问题是,我该如何同时做两件事?我需要单独的“组”单选按钮,但仍然希望将所有内容作为数组传递,但问题是我使用name属性进行操作!如果我将其命名为数组名称,则无法区分无线电组。如果我区别对待,我会失去阵列...

2 个答案:

答案 0 :(得分:1)

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

PHP中的

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

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

答案 1 :(得分:0)

所以我最终使用的方法是查看$ _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);
            }
        }
    }