我需要检查$ _POST ['a']是否为空并且是'1'或'2'因此用户无法删除a =或将值从1或2更改为帖子路径中的其他内容:
<?php
if(empty($_POST['a']) || !in_array($_POST['a'], array('1', '2'))) {
echo 'error1';
} else if ($_POST['a'] == '1') {
do something;
} else if ($_POST['a'] == '2') {
do something;
} else {
echo 'error2';
}
?>
任何人都可以教我如何以正确的方式做到这一点吗?
非常感谢
答案 0 :(得分:4)
您可以改用开关:
switch ($_POST['a']):
case '':
// empty
echo 'error1';
break;
case '1':
// do something for 1
break;
case '2':
// do something for 2
break;
default:
// not empty but not 1 or 2
echo 'error2';
endswitch;
答案 1 :(得分:1)
if (!empty($_POST['a']) && $_POST['a'] == '1') { //Not empty AND is 1
do something;
} else if (!empty($_POST['a']) && $_POST['a'] == '2') { //Not Empty AND is 2
do something;
} else {
echo 'error';
}
前两个将捕获所有“好”值,其他一切都会得到错误。在这种情况下,不需要顶部。
答案 2 :(得分:0)
更新:您遇到语法错误。在第一个)
的末尾缺少if
。
两种简单的方法:
// first condition should be by itself as it's a terminal error
if(empty($_POST['a']) or !in_array($_POST['a'], array('1', '2'))) {
echo 'error1';
die; // or redirect here or just enfore a default on $_POST['a'] = 1; // let's say
}
// Second can be like this or embraced in the else of the first one (se ex.2)
if ($_POST['a'] == '1') {
// do something;
} else if ($_POST['a'] == '2') {
// do something;
}
或
// first condition should be by itself as it's a terminal error
if(empty($_POST['a']) or !in_array($_POST['a'], array('1', '2'))) {
echo 'error1';
// or redirect here or just enfore a default on $_POST['a'] = 1; // let's say
}else{ // Second is in the else here :)
if ($_POST['a'] == '1') {
// do something;
} else if ($_POST['a'] == '2') {
// do something;
}
}
您的上一个else
将无法联系,因为它始终会在您处理空虚和非法价值的第一个if
中结束。