2011-12-27 119 views
2

我试图用NULL替换空字段值,但似乎无法弄清楚如何去做。我试过array_map,array_filterarray_walk,但无济于事。例如:

function replaceWithNull($var) 
{ 
    if (empty($var) || $var == ' ') { 
     $var = "NULL"; 
    } 
} 

array_walk($_POST, "replaceWithNull"); 

而是保持空白/空白。我错过了什么?

+0

啊,好赶上,双方你。我认为它必须是简单的。一个耻辱,我不能给这两个答案的复选标记。 – 2011-12-27 17:25:46

+1

您可能想查看['array_walk_recursive'](http://php.net/array_walk_recursive)。 – Maerlyn 2011-12-27 17:32:03

回答

5

您只修改变量的本地副本。您必须pass the value by reference修改实际的数组中的值:

function replaceWithNull(&$var) 
{ 
    if (empty($var) || $var == ' ') { 
     $var = "NULL"; 
    } 
} 
+0

downvote的任何理由? – 2011-12-27 17:54:24

+0

我没有downvote ...我upvoted这个和我选择的答复作为答案。 – 2011-12-28 14:11:17

-2

嘿家伙看看这个代码:

的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!'; 
} 
?>