假设我有一个包含30个字段的表单。我试图想出一种方法来优化解决方案以检查服务器端是否所有这些字段都是空的或包含特定值并相应地。
因此,1变量的代码如下:
if((!isset($_POST['usa_state_list'])) || (strcmp($_POST['usa_state_list'],'undefined') == 0)) {
$usa_state_list = '';
}
else {
$usa_state_list = $_POST['usa_state_list'];
}
现在想象其中30个字段,你必须有30个if
个语句。你对如何优化这个有了解吗?开关还是换环?
注意:让我们坚持这个例子,我检查字段是否为空或包含undefined
字符串。
由于
答案 0 :(得分:1)
只需创建一个函数并反复使用它。简单的例子我刚刚掀起(尚未经过测试):
function checkPost($key) {
// check if the element has been posted
if(isset($_POST[$key])) {
// check if element is empty
if($_POST[$key] != '') {
// check if the element contains a specific value
if($_POST[$key] == 'my specific value') {
// do whatever here...
} else {
// return the posted value
return strip_tags($_POST[$key]);
}
} else {
// POST value was empty
// you could return an error message here...
// or add to a global $errors array...
return $key . ' is required';
}
}
// the element has not been posted
return false;
}
$usa_state_list = checkPost('usa_state_list');
$name = checkPost('name');
$address = checkPost('address');
答案 1 :(得分:1)
内置filter functions只是略显冗长:
$usa_state_list = filter_form(INPUT_POST, 'usa_state_list');
...但是由于您需要进行一些自定义后处理,并且您需要输出单个变量,我认为编写自己的变量更好:
function post($name) {
$value = filter_input(INPUT_POST, $name);
if ($value!=='undefined') {
return $value;
} else {
return '';
}
}
$usa_state_list = post('usa_state_list');
当然,如果您认为代码易读性适用于懦夫,那么天空就是极限:
foreach (
[
'usa_state_list',
'foo',
'bar',
] as $name
) {
$$name = post($name);
}