代码点火器错误:未定义的偏移量:处理表单中的复选框时为1


Codeigniter error: Undefined offset: 1 when processing checkbox from form

每次提交表单并进行处理时,我都会收到这种错误类型的错误。

A PHP Error was encountered
Severity: Notice
Message: Undefined offset: 1
Filename: controllers/register_grp.php
Line Number: 81

我有这个表单,它包含动态创建的复选框,复选框的数量由用户决定。

<input class='main' type='checkbox' name='tshirttick[1]' id='tshirttick1' value='Yes' />
<input class='main' type='checkbox' name='tshirttick[2]' id='tshirttick2' value='Yes' />
...

提交后,我用以下代码处理它:

$withtshirt = $this->security->xss_clean($this->input->post('tshirttick'));
for ($i = 0; $i < $num_of_members; $i++)
{
     if ($withtshirt[$i] == "Yes")
     {
          $include_shirt = 'Y';
          $ticketcost += 150;
          $tshirtsize[$i] = $this->db->escape($tshirtsize[$i]);
     }
     else
     {
          $include_shirt = 'N';
          $tshirtsize[$i] = "-";
          $tshirtsize[$i] = $this->db->escape($tshirtsize[$i]);
     }
     $id = $this->register_model->addParticipant($i, $tshirtsize[$i], $include_shirt);
}

模型addParticipant基本上将一行插入数据库返回$this->db->insert_id()

错误指向的行号81是以下行:

if ($withtshirt[$i] == "Yes")

行实际上已成功插入,但提交时会打印多个此错误的实例,从而阻止页面重定向到另一个页面。我想每次循环迭代时都会打印错误。

我将如何解决此问题?我只想让页面在执行完所有插入后重定向,但这个"通知"阻止了它。

您的复选框名称应该类似于tshirttick[]

<input class='main' type='checkbox' name='tshirttick[]' id='tshirttick1' value='Yes' />
<input class='main' type='checkbox' name='tshirttick[]' id='tshirttick2' value='Yes' />

输入正在创建一个数组,其中包含键的字符串。PHP找不到与字符串键相关的值,并意识到它可以将字符串转换为数字,因此它将字符串转换成数字并发出通知。

您可以设置不带键的字段名称,它们将自动填充数组。CCD_ 2。您也可以在foreach循环中将$i强制转换为字符串。$i = (string) $i;