2015-01-16 26 views
0

我有以下关联数组存储在一个也包含数据库连接语句的php文件中。

$fields = array(
    "A" => "A", 
    "B" => "B", 
    "C" => "C", 
    ... 
); 

在这里,我叫它

include('dbconnection.php'); 

我打算从这个代码是,$领域内$ _ POST [$场]将被转移到存储中的值$ fields

if (isset($_POST['submit'])){ 

    //iterating through fields array 
    foreach($fields as $column => $field){ 

     //cleaning and storing user input in fields array 
     $field = mysqli_real_escape_string($cxn , htmlspecialchars($_POST[$field])); 
    } 

这些新$字段然后数组值将被转移到$ emptyArray,其中含0,NULL,FALSE或“”值将被过滤掉的数组的元素。

$emptyArray = array(); 

    $emptyArray = array_merge ($emptyArray, array_values($fields)); 

    $emptyArray = array_filter($emptyArray); 

最后,检查是否有存储在$ emptyArray任何元素后,错误信息将被发出,通过调用一起运行功能renderform

if (empty($emptyArray)){  
     $error = 'You have reached this message because you did not specify a field to update'; 
     renderForm($id, $fields, $error); 
    } 
} 

功能renderform包含参数$领域,在这条产业链的第一阵列,这就是为什么我选择使用$ emptyArray,而不是$领域,以节省其结构。

但是,如果我跑的$字段$ emptyArrayrenderform之前,我其操作之前,接收阵列与存储在$字段的键和值的print_r

Array [[A] => A [B] => B [C] => C [...] => ...)

可以使用$ _POST [$ field]我打算ing($ field内的值$ _POST [$ field]被转移到$ fields中存储的值)?如果是这样,这是一个好习惯吗?

感谢您的阅读, 我很乐意回答您的问题。

+0

你不能只是使用['array_map()'](http://php.net/manual/en/function.array-map .PHP) –

回答

0

你可以在一个循环做到这一点:

$fields = array(
    "A" => "A", 
    "B" => "B", 
    "C" => "C", 
); 
$post=[]; 
foreach($fields as $key => $val){ 
    if(!isset($_POST[$key]) || !$_POST[$key]){ 
     die("data for $key is incorrect or missing"); 
    } 
    $post[$key] = mysqli_real_escape_string($cxn , htmlspecialchars($_POST[$key])); 
} 
//all is fine, use $post array for whatever you need it for 
相关问题