形成数组复选框的数组


form array of array checkboxes

我想创建一个数组,其中包含多个存储复选框结果的数组。

category->subcategory->choice

我不确定这是否可能,但我想要这样的东西:

<input type="hidden" name="category[]" />
<input type="checkbox" name="subcat1[]" value="something" />
<input type="checkbox" name="subcat1[]" value="somewhere" />
<input type="checkbox" name="subcat2[]" value="something" />
<input type="checkbox" name="subcat2[]" value="somewhere" />

我希望能够像这样使用 PHP 进行类别数组循环:

foreach($_POST['category'] as $sub){
    switch($sub){
        case 'subcat1':
            foreach($sub as $val){
                //prepare $val to insert into database X
            }
            break;
        case 'subcat2':
            foreach($sub as $val){
                //prepare $val to insert into database Y
            }
            break;
    }
}

这比你想象的还要容易:

<input type="checkbox" name="category[subcat1][]" value="something" />
<input type="checkbox" name="category[subcat1][]" value="somewhere" />
<input type="checkbox" name="category[subcat2][]" value="something" />
<input type="checkbox" name="category[subcat2][]" value="somewhere" />

然后:

foreach($_POST['category'] as $subCategoryName) {
    foreach ($subCategoryName as $item) {
        // ...
    }
}

但是,如果您对不同子类别的预期处理不相似,那么最好将它们发布到不同的数组中。