从表单的已选中和未选中框中获取数值

时间:2017-10-30 16:14:31

标签: php forms checked unchecked

我正在尝试从表单中的所有(已选中和未选中)框中获取值。 我知道未经检查的值通常不会发送到服务器。 我搜索过并发现了这个:

<form action="<?php echo $_SERVER[PHP_SELF] ?>" method="post">
<input type="checkbox" id="1" name="box[]" value="1" />
<input type="checkbox" id="2" name="box[]" value="2"  />
<input type="checkbox" id="3" name="box[]" value="3"  />
<input type="submit" value="Submit" />
</form>

<?php 
// $box = $_POST['box'];
$foo = array();
for ($i = 1; $i <= 3; $i++) {
    $foo[$i] = in_array($i, $_POST['box']) ? 'on' : 'off';
}

print_r ($foo);
?>

输出结果为:

Array ( [1] => off [2] => on [3] => off )

这是一个非常有趣的解决方案,但它只能(1)用于检查,关闭(0)用于未选中的框,而我想从表单中获取数值。 作为输出,我希望有一个包含已检查和未检查值的数组。 我怎样才能最好使用上面的代码作为主干? 请帮忙。

我想详细说明我的问题。如果我有一个下面的表格:

<form action="" method="post">
    <input type = "checkbox" id = "254" name = "voc2[]" value= "8089" />yes
    <input type = "checkbox" id = "255" name = "voc2[]" value= "8148" />no
    <input type = "checkbox" id = "256" name = "voc2[]" value= "8207" />maybe
  <input name="submit" type="submit" />
</form>

如果未选中,可以在同一页面上获取其中一个值(例如8089)吗? 我试过了:

<?php
  if (isset($_POST['submit'])) {
    $voc2 = $_POST['voc2'];

    echo '<br> $voc2 = '. $voc2[0];

  }
?>

但它仍然只显示选中的值。

0 个答案:

没有答案