我试图用NULL替换空字段值,但似乎无法弄清楚如何去做。我试过array_map
,array_filter
和array_walk
,但无济于事。例如:
function replaceWithNull($var)
{
if (empty($var) || $var == ' ') {
$var = "NULL";
}
}
array_walk($_POST, "replaceWithNull");
而是保持空白/空白。我错过了什么?
我试图用NULL替换空字段值,但似乎无法弄清楚如何去做。我试过array_map
,array_filter
和array_walk
,但无济于事。例如:
function replaceWithNull($var)
{
if (empty($var) || $var == ' ') {
$var = "NULL";
}
}
array_walk($_POST, "replaceWithNull");
而是保持空白/空白。我错过了什么?
你必须使用合格为了论证引用改变数组中的元素:
function replaceWithNull(&$var)
{
...
}
否则,你将只改变变量的一个副本。
您只修改变量的本地副本。您必须pass the value by reference修改实际的数组中的值:
function replaceWithNull(&$var)
{
if (empty($var) || $var == ' ') {
$var = "NULL";
}
}
downvote的任何理由? – 2011-12-27 17:54:24
我没有downvote ...我upvoted这个和我选择的答复作为答案。 – 2011-12-28 14:11:17
嘿家伙看看这个代码:
的config.php
<?php
if(is_array($_POST) and count($_POST) > 0)
{
foreach($_POST as $key => $value)
{
if(is_array($value))
{
foreach($value as $k => $val)
{
if(is_string($val))
{
if(empty($val) OR strlen(preg_replace("/(\s+)?/", $val)) == 0)
{
$_POST[$key][$k] = null;
}
}
}
}else{
if(empty($value) OR strlen(preg_replace("/(\s+)?/", $value)) == 0)
{
$_POST[$key] = null;
}
}
}
}
?>
TEST:
<?php
var_dump($_POST);
exit;
?>
myApp.php
<?php
include('config.php');
//.... your code here....
if(is_null($_POST['firstname']))
{
echo 'hey men! error!';
}
?>
啊,好赶上,双方你。我认为它必须是简单的。一个耻辱,我不能给这两个答案的复选标记。 – 2011-12-27 17:25:46
您可能想查看['array_walk_recursive'](http://php.net/array_walk_recursive)。 – Maerlyn 2011-12-27 17:32:03