我已经将复选框创建为一个数组。现在我想根据用户对复选框的选择来分隔复选框值,然后我想显示表单
在使用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
}