php如何显示包含空值项的所有数组项

时间:2013-03-15 10:35:37

标签: php arrays foreach null

我尝试使用var_dump(或echo)列出所有$ _POST数组项,但不显示空值项。如果我使用var_dump($ _ POST)null不会出现,但是如果我使用var_dump($ _ Post [“nullitem”])则出现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'=&gt;字符串'1'(长度= 1)   'submit'=&gt;字符串'提交'(长度= 6)

ck_2 =&gt; 1 - submit =&gt;提交 -

ck_1 null ck_2字符串'1'(长度= 1) ck_3 null

如何在foreach循环中包含所有$ _POST值(我不知道$ _POST数组中有多少个键或名称) 感谢帮助 此致

抱歉。 未设置未选中的复选框,因此不是$ _POST数组的成员,并且不会显示 获取未选中复选框值的方法是设置具有相同名称和ID以及未选中值的隐藏字段(如0),因此在发布时如果返回未选中的隐藏值:

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

感谢Midzai

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

我认为你在你的foreach中包含$ _POST数组的所有值。问题是,如果你没有勾选复选框,$ _POST数组将不包含它的键也不包含它的值。

复选框我认为只有一个值可用,只有在您“签入”复选框时才会显示。另外,$ _POST没有填充密钥。为什么在使用指定的键名(未设置的复选框的名称)直接查询$ _POST时看到NULL,$ _POST数组中不存在该键,并返回返回NULL的内容。

如果您出于某些不明原因需要列出可供选择的所有复选框,您可以添加

<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];