从会话信息中删除项目
问题描述:
我正在使用CodeIgniter
编写此项目,您可以在其中添加和删除项目,例如网上商店。从会话信息中删除项目
我在我的会话类中有一个数组,我试图做的是按id搜索元素并删除它们。
public function removeRow($id) {
if ($id) {
$bucket = $this->session->userdata('bucket');
foreach ($bucket as $key => $value) {
if ($value['id'] == $id) {
unset($bucket[$key]);
}
}
$this->session->set_userdata(array(
'bucket' => $bucket
)
);
}
和session
信息:
Array
(
[session_id] => e0c6303a7c24a05436ef0abfe2424c44
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0
[last_activity] => 1363718778
[user_data] =>
[a] => test
[bucket] => Array
(
[0] => Array
(
[0] => Array
(
[id] => 3
[name] => Maksas Frajus - Amžinybės glėbyje
[price] => 30.99
)
)
[1] => Array
(
[0] => Array
(
[id] => 1
[name] => Maksas Frajus - Atėjūnas
[price] => 35.99
)
)
[2] => Array
(
[0] => Array
(
[id] => 2
[name] => Maksas Frajus - Paprasti stebuklingi daiktai
[price] => 27.5
)
)
)
)
我收到此错误信息:
Message: Undefined index: id
,我甚至不知道我在做什么错。有人可以解释吗?
答
if ($value['id'] == $id) {
应该是这样的:
if ($value[0]['id'] == $id) {
你有一个嵌套的数组,所以你需要去更深一层。每下面的评论
示例阵列:
[bucket] => Array
(
[3] => Array
(
[id] => 3
[name] => Maksas Frajus - Amžinybės glėbyje
[price] => 30.99
)
[1] => Array
(
[id] => 1
[name] => Maksas Frajus - Atėjūnas
[price] => 35.99
)
[2] => Array
(
[id] => 2
[name] => Maksas Frajus - Paprasti stebuklingi daiktai
[price] => 27.5
)
)
多么愚蠢我 – Benedictus 2013-03-19 19:05:35
的看你的阵列,我不明白为什么你有额外的水平。您的数组应该采用上面显示的格式。然后做一个简单的'if(isset($ bucket [$ id])){unset($ bucket [$ id]);}'就足够了,而不需要遍历数组。 – 2013-03-19 19:14:48