Codeigniter,array in session,改变array in session in a specific key的值
Codeigniter, array in session, change the value of array in session in a specific key
我在会话中有一个包含数字数组的变量。我想更改该变量内的特定数字。
我的会话:
$user_data = array(
'user_id' => $user_id,
'username' => $username,
'logged_in' => true,
// 20 slots, the counting starts from 0, the last slot's position
// is 19.
'slots_id' => array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
);
所以,slots_id 是我想要访问的变量。我需要更改最后一个数字,it.In 我的控制器有以下内容。
$this->session->set_userdata('slots_id'[19], 100);
这里我试图将最后一个插槽的值设置为 100。但是我放在那里的“[19]”导致错误。
A PHP Error was encountered Severity: Notice Message: Uninitialized string offset: 19
Google对我目前的情况没有帮助,谢谢你的时间。
Uninitialized string offset
PHP 中的错误有大量相关文档。您收到此错误是因为您没有引用数组的索引 19,而是引用了字符串的索引,这正是 'slots_id' 在本例中的含义。 'slots_id' 是 8 个字符长,这意味着超过 7 的任何索引实际上是未定义的。
如果由于某些奇怪的原因无法直接访问 $_SESSION
超全局,则需要通过助手检索整个 slots_id
数组,更新本地副本中所需的索引,然后用更新后的副本更新会话变量的 slots_id
数组。
解决问题的两种方法:
$this->session->set_userdata('slots_id'[19], 100);
并未尝试将值 100 分配给 $slots_id
数组索引 19 上的数组元素。它试图将值 100 设置为超出范围的 'slots_id'
字符串的第 20 个字符(索引 19)。
您可以试试:
$this->session->set_userdata('slots_id[19]', 100);
或者更好的是,从会话中删除完整元素,更新并重置它:
$aux = $this->session->userdata('slots_id');
$aux[19] = 100;
$this->session->unset_userdata('slots_id');
$this->session->set_userdata('slots_id', $aux);
代码有点多,但我的建议是始终替换会话数据,而不是即时更新。
我在会话中有一个包含数字数组的变量。我想更改该变量内的特定数字。 我的会话:
$user_data = array(
'user_id' => $user_id,
'username' => $username,
'logged_in' => true,
// 20 slots, the counting starts from 0, the last slot's position
// is 19.
'slots_id' => array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
);
所以,slots_id 是我想要访问的变量。我需要更改最后一个数字,it.In 我的控制器有以下内容。
$this->session->set_userdata('slots_id'[19], 100);
这里我试图将最后一个插槽的值设置为 100。但是我放在那里的“[19]”导致错误。
A PHP Error was encountered Severity: Notice Message: Uninitialized string offset: 19
Google对我目前的情况没有帮助,谢谢你的时间。
Uninitialized string offset
PHP 中的错误有大量相关文档。您收到此错误是因为您没有引用数组的索引 19,而是引用了字符串的索引,这正是 'slots_id' 在本例中的含义。 'slots_id' 是 8 个字符长,这意味着超过 7 的任何索引实际上是未定义的。
如果由于某些奇怪的原因无法直接访问 $_SESSION
超全局,则需要通过助手检索整个 slots_id
数组,更新本地副本中所需的索引,然后用更新后的副本更新会话变量的 slots_id
数组。
解决问题的两种方法:
$this->session->set_userdata('slots_id'[19], 100);
并未尝试将值 100 分配给 $slots_id
数组索引 19 上的数组元素。它试图将值 100 设置为超出范围的 'slots_id'
字符串的第 20 个字符(索引 19)。
您可以试试:
$this->session->set_userdata('slots_id[19]', 100);
或者更好的是,从会话中删除完整元素,更新并重置它:
$aux = $this->session->userdata('slots_id');
$aux[19] = 100;
$this->session->unset_userdata('slots_id');
$this->session->set_userdata('slots_id', $aux);
代码有点多,但我的建议是始终替换会话数据,而不是即时更新。