如何在php中分离数组值,因为我的复选框字段包含不同的值


How do I separate the array value in php because my checkbox field contains different values?

我已经将复选框创建为一个数组。现在我想根据用户对复选框的选择来分隔复选框值,然后我想显示表单

在使用foreach函数后,我得到了类似于class1、class6、class8的值。如果是类1,我会显示表单字段。如果是class6,我必须显示表单字段。

如何分离复选框并与if条件匹配。

我的表格:

<form name="frm" method="post">
    <table align="center">
        <tr>
            <td>Name</td>
            <td><input type="text" name="txt" id="txt" required ></td><td></td>
        </tr>
        <tr>
            <td>Password</td>
            <td><input type="password" name="pass" id="pass" required></td><td></td>
        </tr>
        <tr>
            <td>Product</td>
            <td>
                <input type="checkbox" name="chk[]" value="class1">class1
                <input type="checkbox" name="chk[]" value="class6">class6
                <input type="checkbox" name="chk[]" value="class8">class8
                <input type="checkbox" name="chk[]" value="class10">class10
                <input type="checkbox" name="chk[]" value="class12">class12
                <input type="checkbox" name="chk[]" value="engineering">engineering
                <input type="checkbox" name="chk[]" value="technology">technology
            </td><td></td>
        </tr>
        <tr>
            <td></td>
            <td><input type="submit" name="submit" value="Save"></td><td></td>
        </tr>
    </table>

我的PHP值:

<?php
if (isset($_POST['submit']))
{
    $name    = $_POST['txt'];
    $pass    = $_POST['pass'];
    $product = $_POST['chk'];
    //print_r($product);
    foreach ($product as $result => $v)
    {
        echo "The item has" . $v . "<br/>";
    }
}
?>

if($v=="class1" ||   $v=="class6"  ||  $v=="class8" ||  $v=="class10")
{
?>
<p>class1 subject form</p>
<form name="f1" action="" method="post">
<input type="checkbox" name="chk[]" value="allsubject">allsubject
<input type="checkbox" name="chk[]" value="science">science
<input type="checkbox" name="chk[]" value="maths">maths
</form>
</p>
<?php
}
?>
<?php
if($v=="class10" ||   $v=="class12" )
{
?>
<p>class12 subject form</p>
<form name="f1" action="" method="post">
<input type="checkbox" name="chk[]" value="phyiscs">phyiscs
<input type="checkbox" name="chk[]" value="science">science
<input type="checkbox" name="chk[]" value="maths">maths
</form>
</p>
<?php
}
?>
Here is my class1 form
<p>class1 subject form</p>
<form name="f1" action="" method="post">
    <input type="checkbox" name="chk[]" value="allsubject">allsubject
        <input type="checkbox" name="chk[]" value="science">science
        <input type="checkbox" name="chk[]" value="maths">maths
</form>
</p>

我希望每个人都能理解我的问题

您似乎在foreach循环之外检查$v的值,这是没有意义的——$v只是数组中可能多个值中的一个,因此您无法安全地使用它来得出结论。

您可以使用in_array进行测试:

if (in_array("class1", $product) || in_array("class6", $product) || ... ) {
    // show some elements
}

当然,如果你想检查很多可能性,这会很麻烦。在这种情况下,您可以使用array_intersect并引入一些可读性变量:

$class1SubjectFormValues = ['class1', 'class6', 'class8', ... ];
$class12SubjectFormValues = ['class10', 'class12', 'class8', ... ];
if (array_intersect($product, $class1SubjectFormValues)) {
    // class1 subject form
}
if (array_intersect($product, $class12SubjectFormValues)) {
    // class12 subject form
}