空数组不出现在$ _POST中

时间:2015-03-10 22:06:18

标签: php arrays forms post

我有一些同名的复选框,可以检查其中任何一个。 用户也可以查看无。

我使用数组表示法:

<ul>
  <li><input type="checkbox" name="data[list][]" /> 1</li>
  <li><input type="checkbox" name="data[list][]" /> 2</li>
  <li><input type="checkbox" name="data[list][]" /> 3</li>
</ul>

但是在$ _POST里面,如果至少检查过其中一个,我只会得到数组。 如果没有检查它们,我没有得到一个空数组。这混淆了我的PHP表单处理程序,它应该是抽象的。我不想为其中的某些字段名称编写ifs:s

foreach($_POST['data'] as $key => $value){

  $some_object->set($key, $value); 
  // value should be empty array if nothing is checked :s

}

有没有办法获得空数组?

2 个答案:

答案 0 :(得分:0)

  

有没有办法获得空数组?

没有。如果未选中任何复选框,则浏览器不会发送任何内容。

但是我可以理解你想要防止ifs。您可以通过初始化为默认值来执行此操作。 array union operator对此有用:

$_POST += ['data' => []];

答案 1 :(得分:0)

纯粹的HTML方法怎么样:

<input type="hidden" name="data[list]" value="">
<ul>
  <li><input type="checkbox" name="data[list][]" /> 1</li>
  <li><input type="checkbox" name="data[list][]" /> 2</li>
  <li><input type="checkbox" name="data[list][]" /> 3</li>
</ul>

这至少会回归:

"data" => array:1 [▼
   "list" => ""
]

如果没有勾选复选框而不是空数组,那么List将是一个空字符串,不知道这对你来说是否足够好?