Codeigniter 为什么从复选框中获取字符串而不是数组?

Codeigniter 为什么从复选框中获取字符串而不是数组?,codeigniter,Codeigniter,我的表单中有复选框,它返回的是字符串而不是数组。谁能告诉我我的代码有什么问题吗 以下是视图中的代码: <?php echo form_open('backOfficeUsers/deleteMoreUsers');?> <table border="0" cellpadding="4" cellspacing="1" bgcolor="#02659E" width="500"> <tr bgcolor=

我的表单中有复选框,它返回的是字符串而不是数组。谁能告诉我我的代码有什么问题吗

以下是视图中的代码:

    <?php echo form_open('backOfficeUsers/deleteMoreUsers');?>
            <table border="0" cellpadding="4" cellspacing="1" bgcolor="#02659E" width="500">
                <tr bgcolor="#E9E8ED">
                    <td align="center">
                        <b>User ID</b>
                    </td>
                    <td align="center">
                        <b>User Name</b>
                    </td>
                    <td align="center">
                        <b>Password</b>
                    </td>
                    <td align="center">
                        <b>Select for delete</b>
                    </td>
                    <td align="center">
                        <b>Delete</b>
                    </td>
                </tr>

<?php

    foreach ($users as $key => $user) 
    {
        echo form_open('backOfficeUsers/deleteUser');
        echo form_hidden('dpage', 'backOfficeUsers/displayAllUsers');
        echo form_hidden('rid', $user['id']);
        echo"<tr bgcolor='#E9E8ED'>";
        echo "<td>" . anchor("backOfficeUsers/displayEditUserForm/$user[id]/", $user['id']) . "</td>";
        echo "<td>" . $user['username'] . "</td>  ";
        echo "<td>" . $user['password'] . "</td>  ";
         echo "<td>" . form_checkbox('userdelete[]', $user['id']) . "</td>  ";
        $confirm = "onclick='return confirmSubmit();'";
        echo"<td>";
        echo form_submit('submit', 'Delete', $confirm);
        echo"</td></tr>";
        echo form_close();
    }
?>
            </table>
            <?php echo form_submit('submit', 'Delete All Selected Users');?>
            <?php echo form_close();?>
        </div> 

这是打印字符串(3)和第一行的id。

编辑:我刚刚捕捉到:

您有嵌套的
标记,该标记无效且容易出现意外行为,您必须首先修复该标记(高优先级)。我不知道您需要删除哪一个,因为我不知道您的应用程序,但看起来
foreach
中的那些不应该在那里,否则您不需要发布一个值数组

无论如何,假设不是这样的话


如果这是您的代码:

foreach ($this->input->post('userdelete') as $row){
    $deleteWhat = $row;
}
然后,每个迭代中的
$deleteWhat
包含已发布的字符串,无论该复选框的
值中有什么内容

这是阵列:

$this->input->post('userdelete')
它包含从
form_复选框('userdelete[]',$user['id'])发布的所有内容。

你的代码运行良好

记住几件事:

  • 由于括号的缘故,将作为值数组发布
  • $\u POST['somename']
    等于
    $this->input->POST('somename')
    ,除非未设置值(第一个生成未定义的变量通知,第二个返回
    FALSE
  • 您可以指定如下键:
  • 将发布一组数组等
  • 除非选中复选框,否则不会发布任何内容

您没有显示分配给
$deleteWhat
。。。我们怎么知道它应该包含什么呢?很抱歉这个错误…foreach($this->input->post('userdelete')as$row){$deleteWhat=$row;}我刚刚注意到你在另一个
form_open()
内部有
form_open()
这会把事情搞砸,你意识到了吗?'code'$deleteWhat=$this->input->post('userdelete');var_dump($deleteWhat);死亡();'代码'产生这个:数组(1){[0]=>string(3)“200”}在我看来是正确的,不确定你看到它有什么错,它是一个数组,有一个项:字符串“200”。我建议你发表你的文章,而不是把你的代码放在无法理解的地方。你注意到嵌套的
标记了吗?我知道我在表单中有表单…第一个是删除所有选定的用户,第二个是只删除一个用户。我需要两者,这样用户可以删除一个或多个记录。我的代码中的问题是,即使我选中3个或更多复选框,我总是只得到第一个选中的复选框,而不是其余的复选框……但你不能这样写。表单不能位于HTML中的其他表单中,如果这样做,您将得到奇怪的结果。您只得到一个项,因为一旦解析器看到
,外部项就被关闭。我同情你的事业,但你需要找到另一种方式来做。对不起,不是我的规则。那么,我现在有哪些选择呢?使用jquery获取所有选中的复选框?
$this->input->post('userdelete')