Php form_checkbox()在codeigniter中返回字符串而不是数组

Php form_checkbox()在codeigniter中返回字符串而不是数组,php,forms,codeigniter,post,Php,Forms,Codeigniter,Post,下面是codeigniter视图中的一些代码: <li> <label>Assign volunteer to event:</label><br /> <? foreach ($all_vols as $vol) :?> <?=form_checkbox('volunteers', $vol) ?> <?=$vol['username']?>

下面是codeigniter视图中的一些代码:

   <li>
      <label>Assign volunteer to event:</label><br />
      <? foreach ($all_vols as $vol) :?>
        <?=form_checkbox('volunteers', $vol) ?>
        <?=$vol['username']?>
        <br />
      <? endforeach ?>  
    </li>
  • 指定志愿者参加活动:


  • 我希望在
    $\u POST
    变量中有一个名为
    志愿者的数组。相反,我得到的是
    “志愿者”=>string('array')
    。有什么想法吗?

    以这种方式使用时,不能将数组用作形式_checkbox()的第二个参数,并且以后使用
    $vol['username']
    时,
    $vol
    很可能是数组。您混淆了表单帮助器,它将第一个参数用作“name”属性,第二个参数用作“value”

    尝试:

    
    
    上的文档建议使用字符串作为第一个参数(在您的案例中为“志愿者”)将生成该名称的
    ,同时对输入标记内的属性值对使用
    $vol
    。这是你想要的吗?如果是这样的话,您显然会得到一个“username”属性。

    来自CI的

    $data=array(
    “名称”=>“时事通讯”,
    “id”=>“时事通讯”,
    '值'=>'接受',
    “选中”=>为真,
    '样式'=>'边距:10px',
    );
    回显表格复选框($data);
    //将产生:
    

    数组应包含填充复选框所需的数据。因此,如果您确定复选框包含填充字段所需的内容,您可能需要将其更改为

    的确!我的问题是,我将数组作为第二个参数传递给表单帮助器。因此,表单助手为每个复选框指定了“array”值。我根据您的建议修复了该问题(并在来源中确认值是正确的)。然而,现在我只得到了$u POST['志愿者]中的最后一个复选框值。难道不应该有一个包含所有选定值的数组吗?为什么我只得到最后一个值?@sarsinmypockets是的,很抱歉我忘了,你需要给志愿者添加括号,这样它就变成了一个值数组(打印以查看结果)。更新了我的答案以反映这一点。
    <? foreach ($all_vols as $vol) :?>
            <?=form_checkbox('volunteers[]', $vol['username']) ?>
            <?=$vol['username']?>
            <br />
    <? endforeach ?>  
    
    $data = array(
        'name'        => 'newsletter',
        'id'          => 'newsletter',
        'value'       => 'accept',
        'checked'     => TRUE,
        'style'       => 'margin:10px',
        );
    
    echo form_checkbox($data);
    
    // Would produce:
    
    <input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />