Php 数组过滤器($\u POST)-排除某些表单字段

Php 数组过滤器($\u POST)-排除某些表单字段,php,Php,我正在使用array\u过滤器($\u POST)插入到数据库中 $db->insert('customers', $data_to_db); 但是,我想从输入中排除几个字段,因为它们不是数据库字段 是否有一种方法可以轻松排除在数组过滤器中 谢谢。过滤后删除不需要的字段 unset($data_to_db['field1']); unset($data_to_db['field2']); 指定所需对象并计算交点: $result = array_intersect_key($_POST

我正在使用
array\u过滤器($\u POST)插入到数据库中

$db->insert('customers', $data_to_db);
但是,我想从输入中排除几个字段,因为它们不是数据库字段

是否有一种方法可以轻松排除在数组过滤器中


谢谢。

过滤后删除不需要的字段

unset($data_to_db['field1']);
unset($data_to_db['field2']);

指定所需对象并计算交点:

$result = array_intersect_key($_POST, ['keep1'=>true, 'keep2'=>true]);
或在过滤器中:

$fields = ['keep1', 'keep2'];
$result = array_filter($_POST, function($v, $k) use($fields) {
                                   return in_array($k, $fields);
                               }, ARRAY_FILTER_USE_BOTH);
如果使用过滤器删除空值,则:

$result = array_filter($_POST, function($v, $k) use($fields) {
                                   return !empty($v) && in_array($k, $fields);
                               }, ARRAY_FILTER_USE_BOTH);
但是,如果在表单中使用多维数组,则更容易:

<input name="data[keep1]" . . . >
<input name="data[keep2]" . . . >

然后插入时只需使用
$\u POST['data']