【问题标题】:check multiple values from checkbox in PHP从 PHP 中的复选框中检查多个值
【发布时间】:2018-05-29 20:52:23
【问题描述】:

我有这个表格:

<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
}

【问题讨论】:

  • $_POST[check_list] 将是一个您可以使用的数组
  • 你觉得if用吗?
  • @smith 查看我的更新 ,,,
  • if ($check =='2' &amp;&amp; $check =='3' &amp;&amp; $check =='6'){ $check 一次怎么可能不止一件?

标签: php html arrays


【解决方案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['check_list'] 索引将更改

【讨论】:

  • 我认为array_diffarray_intersect 可能更好,但这会起作用,所以你可以投票。
【解决方案2】:

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

然后你可以使用if (in_array(2, $_POST['check_list'])) {...} 来做你想做的事情,如果2被选中,例如。

【讨论】:

  • 如果我有 2,3,6 怎么办?如何在 in_array 中使用它??
  • 可以查看this answer
  • 如果选中其他选项,@GutierrezPS 比较 $_POST['check_list'] 将无法按预期工作。使用空函数检查 $_POST['check_list'] 是否已设置。
  • @abukotsh in_array(2, $array) &amp;&amp; in_array(3, $array) &amp;&amp; in_array(6, $array)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多