0

我有一个这样的表格,有很多复选框

<form action="myscript.php" method="post">
   <select name="myselect>
      <option value="1">option1</option>
      <option value="2">option2</option>
      <option value="3">option3</option>
      ...
   </select>
   <ul>
      <li><input type="checkbox" name="aaa"/>something1</li>
      <li><input type="checkbox" name="aab"/>something2</li>
      <li><input type="checkbox" name="aac"/>something3</li>
      <li><input type="checkbox" name="aad"/>something4</li>
      ...
  </ul>
  <input type="submit" value="Submit"/>
</form>

(选择的选项数量和复选框的数量未定义并且可能会有所不同)我无法弄清楚如何在不与我的选择值“混合”的情况下检索所有复选框 $_POST 值......

在类似的情况下,我只有很多文本框,我这样做了:

foreach($_POST as $key => $value) {
   ...
}

但在这种情况下,我只有文本框......

4

2 回答 2

4

除非有名称,否则复选框不会提交任何数据。如果您给它们都赋予相同的名称,那么它们将被任何理智的表单数据解析器分组。对于 PHP(在其设计的特定部分针对边缘情况进行了过度设计),名称必须以[].

那么你也能:

  <li><input type="checkbox" name="foo[]" value="aaa"/></li>
  <li><input type="checkbox" name="foo[]" value="aab"/></li>
  <li><input type="checkbox" name="foo[]" value="aac"/></li>
  <li><input type="checkbox" name="foo[]" value="aad"/></li>

和:

foreach($_POST['foo'] as $value) {
   ...
}

将遍历所有选中复选框的所有值(未选中的复选框不会成功,因此不会出现在数据中)。

于 2013-08-27T15:15:02.913 回答
2

您的复选框元素没有names。如果未选中复选框,则名称将不会出现在 中$_POST,如果选中,它将以指定的值出现。

<input type="checkbox" name="aaa" value="1"/>

应该给你:

$_POST["aaa"] === "1";
于 2013-08-27T15:13:54.840 回答