我有一个带有多个复选框的表单,我想将其放入一个数组中。我按照这里提供的示例:http://www.kavoir.com/2009/01/php-checkbox-array-in-form-handling-multiple-checkbox-values-in-an-array.html
所以我准备了文件:
复选框.php:

<form action="checkboxes2.php" method="post">
<input type="checkbox" name="tags[]" value="1" />1<br>
<input type="checkbox" name="tags[]" value="2" />2<br>
<input type="checkbox" name="tags[]" value="3" />3<br>
<input type="checkbox" name="tags[]" value="4" />4<br>
<input type="submit" value="Send" />
</form>

复选框2.php:
<?php
print_r($_POST["tags"]);
?>

很简单…我意识到我应该只得到这些文本框的值,而不是它们是否被选中。但我还是有个错误:
Undefined index: tags in checkboxes2.php on line 2

我完全不知道我在这里做错了什么。我看了上面链接中的示例,做了完全相同的事情(主要是复制/粘贴和更改一些部分,比如添加一个提交按钮),但是没有得到示例中所示的输出。我至少应该得到每个复选框的值,对吧?
我想做的是:我想检查复选框的数组,看看哪些已经被选中,然后在第二个数组中添加“是”或“否”,如下所示:
<?php
  $number1 = $_POST["tags"];
  $number2 = array();

  foreach($number1 as $number1_output)
  {
    if(isset($number1_output))
    {
      $number2[] = "yes";
    }
    else
    {
      $number2[] = "no";
    }
  }

  print_r($number2);
?>

好吧…只有一半的效果。只有选中的复选框才会添加到阵列中。所以如果我选择“3”和“4”,我会得到:
Array ( [0] => yes [1] => yes )

处理数组中的复选框并验证它们的最佳方法是什么?

最佳答案

或者,如果您希望复选框也在未检查的情况下发送值,则可以在复选框之前添加隐藏输入字段:

<input type="hidden" name="tag[1]" value="off" />
<input type="checkbox" name="tag[1]" value="on />

因为复选框只在设置时发送,但它会在HTML后面覆盖隐藏的内容,因此,根据检查框是否选中,您将始终具有“关闭”或“打开”的tag[1]集合。

10-05 21:08
查看更多