检查PHP中复选框的多个值

时间:2018-05-29 20:52:23

标签: php html arrays

我有这样的表格:

<form action="" method="post">
<input type="checkbox" name="check_list[]" value="0" id="check_list">- 0<br>
<input type="checkbox" name="check_list[]" value="1" id="check_list">- 1<br>
<input type="checkbox" name="check_list[]" value="2" id="check_list">- 2<br>
<input type="checkbox" name="check_list[]" value="3" id="check_list">- 3<br>
<input type="checkbox" name="check_list[]" value="4" id="check_list">- 4<br>
<input type="checkbox" name="check_list[]" value="5" id="check_list">- 5<br>
<input type="checkbox" name="check_list[]" value="6" id="check_list">- 6<br>
<input type="checkbox" name="check_list[]" value="7" id="check_list">- 7<br><br>
<input type="submit" name="submit" Value="Submit"/>
</form>

现在我不会检查这个表格的结果,如果结果有(2,3,6)我们需要做某事,如果结果有值(2,3)我们需要做某事,如果结果有价值(2)我们需要做某事,如果结果有价值(3)我们需要做某事,如果结果有价值(6)我们需要做点什么,

怎么能在PHP中做到这一点?

我试试这个,但不适合我

if(!empty($_POST['check_list'])) {

    foreach($_POST['check_list'] as $check) {
    if ($check =='2' && $check =='3' && $check =='6'){
        // do something
    } elseif ($check =='2' && $check =='3'){
        // do something
    } elseif ($check =='6'){
        // do something
    } elseif ($check =='3'){
        // do something
    } elseif ($check =='2'){
        // do something
    }
}
}

我也尝试这个而不做任何事情

if(in_array(array(2,3,6),$_POST['check_list'])){ 
// not work
} elseif(in_array(array(2,3),$_POST['check_list'])){ 
// not work
} elseif(in_array(array(2),$_POST['check_list'])){ 
// work
} elseif(in_array(array(3),$_POST['check_list'])){ 
// work
} elseif(in_array(array(7),$_POST['check_list'])){ 
// work
}

2 个答案:

答案 0 :(得分:1)

简而言之,当您提交表单时,您将拥有一个包含您已检查过的元素的数组$_POST['check_list']。因此,如果您检查2,3和6,$_POST['check_list'] = [2, 3, 6]。请注意,如果您未选中任何选项,则$_POST['check_list']将不存在。

然后,如果选中2,则可以使用if (in_array(2, $_POST['check_list'])) {...}执行所需操作。

答案 1 :(得分:1)

    <?php

if(!empty($_POST['check_list'])){
    if(
        has_values(Array(2,3,6), $_POST['check_list'])
    ){
        //Do what you need to do

    }else if(
        has_values(Array(2,3), $_POST['check_list'])
    ){
        //Do what you need to do

    }else if(
        has_values(Array(2), $_POST['check_list'])
    ){
        //Do what you need to do

    }
}else{
    //no checkboxes have been set
}

function has_values($testValues, $arrValues){
/*
    testValues is a 1 dimensional array (needles)
    arrValues is a 1 dimensional array that takes the array of set checkboxs ( haystack )
*/
    foreach ($testValues as $key => $value) {
        if(!in_array($value, $arrValues)){
            return false;
        }
    }
    return true;
}

开发人员说明 in_array不依赖于类型。

如果未选中复选框,则$ _POST [&#39; check_list&#39;]索引将发生变化