我有一些同名的复选框,可以检查其中任何一个。 用户也可以查看无。
我使用数组表示法:
<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
}
有没有办法获得空数组?
答案 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将是一个空字符串,不知道这对你来说是否足够好?