2015-01-16 1 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 вместо $ полей для того, чтобы сохранить свою структуру.

Однако, если я бегу print_r из $ полей и $ emptyArray непосредственно перед renderform, я получаю массивы идентичных ключей и значений, хранящихся в $ полях до их манипуляции

Массив ([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 
Смежные вопросы