通过$ _POST从复选框获取值到数组

时间:2017-03-23 11:18:56

标签: php

我的HTML视图在foreach中有一个复选框(循环3次)。

<?php 
$i = 1;
foreach($management_module AS $row){
?>
<div class="checkbox">
<label>
    <input type="checkbox" name="module[]" id="module<?php echo $i ?>" value="<?php echo $row['id'] ?>"><?php echo $row['name']." (".$row['code'].")"; ?>
</label>
</div>
<?php $i++ }?>

我在控制器中得到module[]的这个帖子值,如下所示

if(isset($_POST['module'])){
    $data['module']=($_POST['module']);
}

$data['module']给出以下结果。

  1. 如果选中第一个复选框:Array ( [0] => 1 )
  2. 如果选中第二个复选框:Array ( [0] => 2 )
  3. 但我希望数组结果如下,

    1. - &GT; Array ( [0] =>1 [1] => [2] => )
    2. - &GT; Array ( [0] => [1] => 1 [2] => )
    3. 请帮我实现这个。

4 个答案:

答案 0 :(得分:0)

为每个复选框添加一个隐藏字段,该字段没有值或值为0。

如下所示: -

<div class="checkbox">
    <label>
        <input type="hidden" value="" name="module[<?php echo $i;?>]"><!-- you can use value='0' also based on your wish -->
        <input type="checkbox" name="module[<?php echo $i;?>]" id="module<?php echo $i ?>" value="<?php echo $row['id'] ?>"><?php echo $row['name']." (".$row['code'].")"; ?>
    </label>
</div>

在我的本地输出一些硬代码值: -

我选择了什么: - http://i.share.pho.to/83bb58ca_o.png

提交后我得到了什么: - http://i.share.pho.to/b8474aef_o.png

答案 1 :(得分:0)

将索引添加到复选框的名称。

<?php 
$i = 1;
foreach($management_module AS $row){
?>
<div class="checkbox">
<label>
    <input type="checkbox" name="module[<?php echo $i ?>]" id="module<?php echo $i ?>" value="<?php echo $row['id'] ?>"><?php echo $row['name']." (".$row['code'].")"; ?>
</label>
</div>
$i++ }?>

答案 2 :(得分:0)

您可以直接将复选框name属性设置为行的ID(及其值为1),如下所示:

<input type="checkbox" name="module[<?php echo $row['id'] ?>]" id="module<?php echo $i ?>" value="1"><?php echo $row['name']." (".$row['code'].")"; ?>

然后,在您的PHP处理中,循环覆盖所有可能的复选框,使用for而不是foreach(或foreach上的$management_module):

for ($i=0; $i<count($management_module); $i++) {
    $data['module'][$i] = (isset($_POST['module'][$i]) ? 1 : 0);
}

答案 3 :(得分:0)

试试这个:

$module= $_POST['module'];
$size= count($module);

$i = 0;
while ($i < $size) {
    $arraymodule[] = '$module[$i]';
    ++$i;
}