【问题标题】:Get a checkbox value even if it is unchecked when checkbox is an array name当复选框是数组名称时,即使未选中也获取复选框值
【发布时间】:2015-08-05 00:25:34
【问题描述】:

我需要在我的页面上提交所有复选框。我有以下代码来显示复选框:

foreach($categories as $category){
    $cat_name = $category->name;
    $cat_name = htmlspecialchars_decode($cat_name);
    $list_name = $network_name.' '.$cat_name;
    if (in_array($list_name, $list_names)) {
        $checked = 'checked';
    }else{
        $checked = '';
    }
    $output .= '<input type="hidden" name="subscribe[]" value="0">';
    $output .= '<input type="checkbox" name="subscribe[]" value="'.$list_name.'" '.$checked.'>';
    $output .= $list_name;
    $output .= '<br>';
}

现在我正在尝试使用 foreach 循环来处理这些:

foreach($_POST['subscribe'] as $value){
    echo "it has a value of".$value;
}

这只会显示复选框,但我也想获取未选中框的值。有没有办法做到这一点?

【问题讨论】:

标签: php checkbox


【解决方案1】:

您遇到的问题是命名。每个循环有 2 个元素,都命名为 subscribe[],因此发布时您看不到“已检查”值是否已覆盖“未检查”值,因为您只有一个元素数组。

您需要一种方法将 2 个元素链接在一起,使它们具有相同的名称,如果选中,则值将覆盖未选中的值。

尝试在循环内增加一个整数并在两个元素中使用它,这样每个“循环”都有一个唯一的元素名称(而不是每个输入)。

试试这个修改:

$i = 1;
foreach($categories as $category){

    $output .= '<input type="hidden" name="subscribe[$i]" value="0">';
    $output .= '<input type="checkbox" name="subscribe[$i]"  value="'.$list_name.'" '.$checked.'>';

    $i++;
}

【讨论】:

    猜你喜欢
    • 2016-06-25
    • 2012-12-20
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    相关资源
    最近更新 更多