我有6个选择输入字段,所有6个输入字段都有相同的选项值,但我希望每个选择输入值都应该是唯一的,例如
输入5和输入6是可选输入字段,但如果它们已填充,则应验证它们是否为唯一值
Input1 Input2 Input3 Input4 Input5 Input6
value1 value1 value1 value1 value1 value1
value2 value2 value2 value2 value2 value2
value3 value3 value3 value3 value3 value3
现在,如果用户在value1
中选择了Input1
,那么他就无法在其他value1
中选择select fields
我知道我可以使用if elseif else
来做,但它不会那么专业,是否有更好的方法来验证它。
答案 0 :(得分:1)
在一个变量中获取所有字段输入,然后只获取唯一值。
请参阅下文。这会有所帮助。
if ($_POST) {
$validate_data = [];
$is_valid = FALSE;
$validate_data[] = $_POST['Input1'];
$validate_data[] = $_POST['Input2'];
$validate_data[] = $_POST['Input3'];
$validate_data[] = $_POST['Input4'];
// get unique elements from array
$result = array_unique($validate_data);
// if array size is equal to no of input fields then means all are unique
// else it has duplicate values
if (count($result) != 4 ) {
$is_valid = FALSE;
} else {
// Validate optional fields
if (isset($_POST['Input5']) && in_array($_POST['Input5'], $result)) {
$is_valid = FALSE;
} else if (isset($_POST['Input6']) && in_array($_POST['Input6'], $result)) {
$is_valid = FALSE;
} else {
$is_valid = TRUE;
}
}
echo ($is_valid) ? 'All are unique.' : 'Invalid Data';
}
答案 1 :(得分:1)
这是我想出来的,但这不是最好的方法。
<?php
if ($_POST) {
$data = [];
$data[] = $_POST['Input1'];
$data[] = $_POST['Input2'];
$data[] = $_POST['Input3'];
$data[] = $_POST['Input4'];
//optional values
if ("" == trim($_POST['Input5'])) {
$data[] = $_POST['Input5'];
}
if ("" == trim($_POST['Input6'])) {
$data[] = $_POST['Input6'];
}
//count post elements
$count = count($data);
// get unique elements from array
$result = array_unique($data);
if (count($result) !== $count) {
echo 'Duplicated data';
} else {
echo 'All are unique';
}
}
我认为更好的解决方案是查看一些Javascript Validators
不要重新发明轮子,除非你计划更多地学习轮子