2011-12-27 6 views
2

빈 필드 값을 NULL로 바꾸려고하는데, 어떻게해야 할지를 파악할 수 없습니다. array_map, array_filterarray_walk을 시도했지만 아무 소용이 없습니다. 예 :

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

array_walk($_POST, "replaceWithNull"); 

대신 빈/비어 있습니다. 내가 뭘 놓치고 있니?

+0

아, 풍어, 둘 다. 나는 그것이 단순해야만한다고 생각했다. 부끄러움 때문에 두 답에 모두 체크 표시를 할 수는 없습니다. –

+1

['array_walk_recursive'] (http://php.net/array_walk_recursive)를 참고하십시오. – Maerlyn

답변

5

변수의 로컬 복사본 만 수정하고 있습니다. 당신은 pass the value by reference 실제 배열의 값을 수정해야합니다

당신은 배열의 요소 변경하기 위해 통과 인수에 대한 참조를 사용할 필요가
function replaceWithNull(&$var) 
{ 
    if (empty($var) || $var == ' ') { 
     $var = "NULL"; 
    } 
} 
+0

downvote에 대한 이유가 무엇입니까? –

+0

나는 downvote하지 않았다 ... 나는 대답과 내가 대답으로 선택한 답장을 모두 upvoted. –

-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!'; 
} 
?> 
관련 문제