我目前有一个包含超过50个字段的表单,大约有20个可选字段.
是否有任何简单的方法可以$_POST在一次命中中处理数据以删除空字符串并在插入数据库之前将其更改为NULL,或者是否必须在以下方法中逐个完成它们:
if ($_POST['field_x'] == "") {
$_POST['field_x'] = NULL;
}
Run Code Online (Sandbox Code Playgroud)
你可以使用array_filter:
$post = array_filter($_POST);
Run Code Online (Sandbox Code Playgroud)
http://php.net/manual/en/function.array-filter.php
如果没有提供回调,则将删除所有输入等于FALSE的条目(请参阅转换为布尔值).
要仅删除空字符串,您可以使用:
function drop_empty($var)
{
return ($var === '') ? NULL : $var;
}
$post = array_filter($_POST, 'drop_empty');
Run Code Online (Sandbox Code Playgroud)
如果您不想删除值,但只想将它们设置为NULL:使用array_map:
$post = array_map('drop_empty', $_POST);
Run Code Online (Sandbox Code Playgroud)