Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP优化:表单变量_Php - Fatal编程技术网

PHP优化:表单变量

PHP优化:表单变量,php,Php,假设我有一个包含30个字段的表单。我试图想出一种优化解决方案的方法,在服务器端检查是否所有这些字段都是空的或包含特定值,并相应地检查它们 因此,1个变量的代码如下所示: if((!isset($_POST['usa_state_list'])) || (strcmp($_POST['usa_state_list'],'undefined') == 0)) { $usa_state_list = ''; } else { $usa_state_list = $_POST['usa_

假设我有一个包含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
字符串


谢谢

只需创建一个函数并反复使用它。我刚刚举了一个简单的例子(没有经过测试):

内置的只是有点冗长:

$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');
当然,如果您认为代码易读性适用于WIMP,那么天空就是极限:

foreach (
    [
        'usa_state_list',
        'foo',
        'bar',
    ] as $name
) {
    $$name = post($name);
}

只是;-)奎?我知道什么是函数…:PAh,很简单,谢谢tim!这确实帮了大忙。:)然后呢
preg_replace
?有趣的是,如果我没有设置清洁功能,我也会因此而受到谴责。:)每个人都有自己的偏好;没有什么能取悦所有人。你可能读了好几个小时关于清理输入的文章,但仍然感到困惑。PHP有一些好的方面:老实说,我实际上在想
strip\u slashes()
(对不起!)。但将任意表单输入作为HTML处理是一个令人惊讶的常见误解。@alvarog.Vicario-Ha!是的,如果我加入了
strip\u slashes()
我就应该被骂一顿我找不到
filter\u表单
函数的任何文档,但是,我找到了
filter\u输入
::的文档。在这里进行清理是否重要?我正在使用MySqli编写的语句。至于你的“专业代码”,我从来没有见过这样的代码,所以我现在最好离你远点:)我刚刚修正了拼写错误,谢谢你注意到了。至于消毒,我的建议是你永远不要盲目地去做。你必须知道你想保护自己不受什么伤害。
foreach (
    [
        'usa_state_list',
        'foo',
        'bar',
    ] as $name
) {
    $$name = post($name);
}