2013-03-15 48 views
0

我嘗試使用var_dump(或echo)列出所有$ _POST數組項目,但不顯示空值項目。如果我用var_dump($ _ POST)空不出現,但如果我用var_dump($ _ POST [ 「nullitem」])出現空:php如何顯示包括空值項目的所有數組項目

<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 string'1'(length = 1) ck_3空

我怎麼能包括foreach循環ALL _POST $值(我不知道有多少鑰匙也不在$ _POST數組名)

感謝您的幫助 問候對不起。 沒有設置未勾選的複選框,所以不是$ _POST數組的成員,並且不會出現 獲取未選中複選框的值的方法是設置具有相同名稱和ID且未選中值的隱藏字段(如0 ),所以在後期的時間,如果未選中隱藏值返回:

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

感謝的Midzai

+1

未經檢查的複選框值未提交過帳。 – 2013-03-15 10:38:55

回答

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時,您看到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];