2013-03-15 4 views
0

var_dump (또는 echo)를 사용하여 ALL $ _POST 배열 항목을 나열하려고했지만 null 값 항목이 표시되지 않습니다. 내가 위해서 var_dump를 사용하는 경우 ($는 POST _) 널 (null)이 나타납니다하지 않지만, 나는 위해서 var_dump를 ($이 _ 포스트 [ "nullitem은"])이 널 (null)이 나타나면 사용하는 경우 :PHP null 값 항목을 포함한 모든 배열 항목을 표시하는 방법

:이 예제의 출력을

<html> 
    <head> 
    </head> 
    <body> 
     <?php 
     if ($_POST["submit"]){ 
      var_dump($_POST);   
      foreach ($_POST as $key => $value) { 
       echo $key."=>"; 
       echo $value; 
       echo "  -  "; 
      } 
      echo "<br>"; 
      echo "ck_1 "; var_dump($_POST["ck_1"]); 
      echo "ck_2 "; var_dump($_POST["ck_2"]); 
      echo "ck_3 "; var_dump($_POST["ck_3"]);  
     } 
?> 
    <form action='test.php' method='post' name='form_example' id='test'> 
     <label for='ck_1'> 
     <input type='checkbox' value=1 id='ck_1' name='ck_1' /> 
     1 </label> 
     <label for='ck_2'> 
     <input type='checkbox' value=1 id='ck_2' name='ck_2' checked='checked' /> 
     2 </label> 
     <label for='ck_3'> 
     <input type='checkbox' value=1 id='ck_3' name='ck_3' /> 
     3 </label> 
     <input type='submit' name='submit' value='Submit' /> 
    </form> 
    </body> 
</html> 

만 ck_2이 선택되어 있으므로

배열 'ck_2'=> 문자열이 '1'(길이 = 1) '제출'=> 문자열 '제출'(길이 = 6)

ck_2 => 1 - 제출 => 전송 -

ck_1 null ck_2 문자열 '1'(길이 = 1)

널 (null)3210 ck_3 어떻게 감사합니다 도움 감사에 대한

죄송합니다 (I 얼마나 많은 키도 $의 _POST 배열의 이름은 모른다) foreach 루프의 모든 $ _POST 값을 포함 할 수 있습니다. 체크하지 않은 체크 박스가 설정되어 있지 않으므로, 은 $ _POST 배열의 멤버가 아니며, 나타나지 않습니다. 체크하지 않은 체크 상자의 값을 얻는 방법은 숨겨진 필드를 같은 이름과 ID 및 체크되지 않은 값 (예 : 0)는, 이후 시간에 있도록 선택하지 않은 숨겨진 값이 반환되는 경우 :

<input type="hidden" name="cx1" value="0" /> 
<input type="checkbox" name="cx1" value="1" /> 

감사의 Midzai

+1

선택하지 않은 체크 박스 값이 게시물에 제출되지 않았습니다. –

답변

0

<html> 
    <head> 
    </head> 
    <body> 
    <?php 
    if ($_POST["submit"]){ 
     echo "<pre>";    
     print_r(array_filter($_POST["ck_1"])); 
     echo "</pre>"; 
    } 
    ?> 
    <form action='test.php' method='post' name='form_example' id='test'> 
    <label for='ck_1'> 
    <input type='checkbox' value=1 id='ck_1' name='ck_1[]' /> 
    1 </label> 
    <label for='ck_2'> 
    <input type='checkbox' value=1 id='ck_2' name='ck_2[]' checked='checked' /> 
    2 </label> 
    <label for='ck_3'> 
    <input type='checkbox' value=1 id='ck_3' name='ck_3[]' /> 
    3 </label> 
    <input type='submit' name='submit' value='Submit' /> 
    </form> 
</body> 
</html> 
0

나는 당신이 생각하십시오 foreach에 $ _POST 배열의 모든 값을 포함합니다. 문제는 체크 박스를 체크하지 않으면 $ _POST 배열에 키 또는 값이 포함되지 않는다는 것입니다.

확인란 믿을 수있는 값이 하나 뿐이므로 확인란에 "체크 인"할 때만 표시됩니다. othervise $ _POST 키가 채워지지 않습니다. $ _POST에 지정된 키 이름 (설정되지 않은 체크 상자의 이름)을 direcly 쿼리 할 때 NULL이 표시되는 이유는 키가 $ _POST 배열에 존재하지 않아서 NULL을 반환하는 값을 반환하기 때문입니다. 일부 모호한 이유로 사용자에 chcecked 할 할 수 있던 모든 체크 박스를 나열해야하는 경우

, 당신은 당신의 사이트에서 체크 박스의 각

<input type='hidden' name='cbNames[]' value='ck_1'/> 
<input type='hidden' name='cbNames[]' value='ck_2'/> 
<input type='hidden' name='cbNames[]' value='ck_3'/> 

을 추가 할 수 있습니다 다음을 통해 목록 $ _POST [ 'cbNames'] 배열을 검색하고 $ _POST를 쿼리하십시오.

foreach ($_POST['cbNames'] as $cbName) 
    print $_POST[$cbName]; 
관련 문제