2011-12-27 100 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!'; 
} 
?>