使多个复选框粘滞

时间:2015-09-21 16:11:04

标签: php html

我有一张表格,我想粘贴。它有很多复选框:

<label><span>ASD</span></label><input type="checkbox"  name="condition[]" value="ASD" <?php if (in_array("ASD", $_POST['condition'])) echo 'checked'; ?> /><br />
<label><span>SLC</span></label><input type="checkbox"  name="condition[]" value="SLC" <?php if (in_array("SLC", $_POST['condition'])) echo 'checked'; ?> /><br />...

提交后,如果用户不做任何选择,此工作正常。我认为这与数组为空的事实有关。我收到一个错误:

  

未定义的索引:条件

以及

  

in_array()期望参数2为数组,null

感谢

3 个答案:

答案 0 :(得分:1)

如果用户未做出选择,则不会定义$_POST['condition']。这是一个简单的修复:添加:

if (!isset($_POST['condition'])) $_POST['condition'] = [];

到你的剧本。

答案 1 :(得分:1)

您可以查看condition数组是否已通过,是否未将其设为空array

if(!isset($_POST['condition'])) { $_POST['condition'] = array(); }

答案 2 :(得分:1)

这是因为:
1)如果用户没有做出任何选择&#34;条件&#34;不会被定义。
2)您正在使用in_array,它需要类型数组的第二个参数。 但是如果用户没有进行任何选择,则此参数将具有未定义的变量作为参数。

所以你可以使用:

<label><span>ASD</span></label><input type="checkbox"  name="condition[]" value="ASD" <?php if (!empty($_POST['condition']) && in_array("ASD", $_POST['condition'])) echo 'checked'; ?> /><br />

SLC /&gt;
...