我不认为这是重复的,我只发现了相似的问题。
我有4个复选框,我想确保它们不同,但我认为我的" if"是一个烂摊子。让我们想象一下,我有20个选择框,然后我会有一个无尽的"如果" (option1!= option2 ... option20,它真的很长"如果")。
我该如何简化?一个while循环还是什么?
这就是我所拥有的:
PHP检查它,然后保存它:
if(($option1!=$option2 and $option1!=$option3 and $option1!=$option4)
and ($option2!=$option1 and $option2!=$option3 and $option2!=$option4)
and ($option3!=$option1 and $option3!=$option2 and $option3!=$option4)
and ($option4!=$option1 and $option4!=$option2 and $option4!=$option3)) {
//insert it to database if everything is okay...
HTML:
<select name="option1">
<option value="">Choose one</option>
<option value="1">Option A</option>
<option value="2">Option B</option>
<option value="3">Option C</option>
<option value="4">Option D</option>
...
</select>
<select name="option2">
<option value="">Choose one</option>
<option value="1">Option A</option>
<option value="2">Option B</option>
<option value="3">Option C</option>
<option value="4">Option D</option>
...
</select>
<select name="option3">
<option value="">Choose one</option>
<option value="1">Option A</option>
<option value="2">Option B</option>
<option value="3">Option C</option>
<option value="4">Option D</option>
...
</select>
<select name="option4">
<option value="">Choose one</option>
<option value="1">Option A</option>
<option value="2">Option B</option>
<option value="3">Option C</option>
<option value="4">Option D</option>
...
</select>
答案 0 :(得分:2)
如果您有20个选择下拉列表,其中所有列表都按时间顺序排列name
个属性,例如name='option1'
,name='option2'
,...,{ {1}},那么你应该使用这样的name='option20'
循环:
for
$numSelects = 20;
$selectValues = array();
$differentValues = true;
for($i = 1; $i <= $numSelects; ++$i){
if(in_array($_POST['option'.$i], $selectValues)){
$differentValues = false;
break;
}
$selectValues[] = $_POST['option'.$i];
}
if($differentValues){
// all the selected values are different
}else{
// selected values are not different
}
是代码中选择下拉列表的数量,因此您需要根据代码更改此值。这里$numSelects
循环的作用是,在for
循环的每次迭代中,它检查用户的选定值是否存在于for
数组中,并且该值是否已存在于数组中然后它将禁用$selectValues
标志并从循环中断开。此外,在每次迭代中,它将用户选择的值附加到$differentValues
数组。退出循环后,您可以根据$selectValues
标志的状态检查所有提交的值是否不同。
答案 1 :(得分:0)
你可以使用array_unique()这样做,你可以在它上构建,以了解哪个键丢失,以在正确的位置显示错误。它还允许您定义您希望检查/计数的帖子密钥。
$differentValues