我的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']
给出以下结果。
Array ( [0] => 1 )
Array ( [0] => 2 )
但我希望数组结果如下,
Array ( [0] =>1 [1] => [2] => )
Array ( [0] => [1] => 1 [2] => )
请帮我实现这个。
答案 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;
}