0

我尝试使用 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' => 字符串'1'(长度=1)'提交'=> 字符串'提交'(长度=6)

ck_2=>1 - 提交=>提交 -

ck_1 null ck_2 string '1' (length=1) ck_3 null

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

对不起。 未选中的复选框未设置,因此不是 $_POST 数组的成员并且不会出现获取未选中复选框的值的方法是设置一个具有相同名称和 id 以及未选中值(如 0)的隐藏字段,因此在发布时返回未检查隐藏值的时间:

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

谢谢米宰

4

2 回答 2

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>
于 2013-03-15T10:41:51.393 回答
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];
于 2013-03-15T10:43:04.597 回答