将if检查重写为函数

时间:2011-03-10 01:02:44

标签: php

http://localhostr.com/files/V1ruKKj/capture.png

我想将所有这些ifs重写为更易于管理大量表单字段的内容。

我知道这不对,但我想将其重写为:

$fields = array(); 

function infcheck($var) 
{ 
if ( !empty( $var ) ) 
{ 
$fields[$var] = $var; 
} 

} 

infcheck( $_POST['streetname'] ); 
infcheck( $_POST['city'] ); 
infcheck( $_POST['state'] );

基本上当我运行infcheck()时,我希望输出看起来像这样:

假设$ _POST ['streetname']是“Circle Street”

streetname => "circle street"

获取完整示例:

$fields = array(); 

infcheck( $_POST['streetname'] ); 
infcheck( $_POST['city'] ); 

//would be:

$fields = array(streetname => 'Circle Street', city => 'New York City');

我想我遇到的问题是在$_POST['formname']变成变量时保留表单的名称。

2 个答案:

答案 0 :(得分:2)

你基本上做的是:

$fields = array_filter($_POST);

如果要将$fields数组限制为预定列表中的某些键,并跳过$_POST数组中不在该列表中的任何内容,则可以执行以下操作:

$whitelist = array('streetname', 'city', ...);
$fields = array_filter(array_intersect_key($_POST, array_flip($whitelist)));

答案 1 :(得分:0)

您可以将要传递的值数组放在foreach循环中。

foreach($_POST as $key => $value){

$fields[$key] = $value;

}