我正在尝试使用PHP识别从复选框中选择的多个值

我正在尝试使用PHP识别从复选框中选择的多个值,php,html,Php,Html,我正在尝试使用PHP识别从复选框中选择的多个值,下面是我的代码,您可以看到我在选择Java和C/C++时尝试创建自定义字符串 <form action="#" method="post"> <input type="checkbox" name="check_list[]" value="C/C++"><label>C/C++</label><br/> <input type="checkbox" name="ch

我正在尝试使用PHP识别从复选框中选择的多个值,下面是我的代码,您可以看到我在选择Java和C/C++时尝试创建自定义字符串

<form action="#" method="post">
    <input type="checkbox" name="check_list[]" value="C/C++"><label>C/C++</label><br/>
    <input type="checkbox" name="check_list[]" value="Java"><label>Java</label><br/>
    <input type="checkbox" name="check_list[]" value="PHP"><label>PHP</label><br/>
    <input type="submit" name="submit" value="Submit"/>
    </form>

<?php
if(isset($_POST['submit'])){//to run PHP script on submit
    if(!empty($_POST['check_list'])){
        // Loop to store and display values of individual checked checkbox.
        foreach($_POST['check_list'] as $selected){
            echo $selected."<br>";
        }
    }
}

if(in_array('C/C++', $_POST['check_list'])) {
    echo 'C/C++ was checked!';
} elseif(in_array('C/C++','Java',$_POST['check_list'])){
    echo 'C/C++ and Java was checked!'; 
}
?>

C/C++
Java
PHP

您不能给阵列()中的
多针。

此外,如果同时选择了
C/C++
Java
,则第一个
if
将成功,因此它将永远不会尝试
elseif
。如果您想要这样的结构,您需要首先测试较大的组

如果,则可以使用嵌套的

if(in_array('C/C++', $_POST['check_list'])) {
    if (in_array('Java', $_POST['check_list'])) {
        echo 'C/C++ and Java were checked!';
    } else {
        echo 'C/C++ was checked!';
    }
}
测试数组中是否有多个项目的更通用方法是使用
array\u intersect

if (!empty(array_intersect(['C/C++', 'Java'], $_POST['check_list'])) {
    echo 'C/C++ and Java were checked!';
}