删除会话索引php

时间:2013-10-02 13:03:40

标签: php

php新手

我想从php会话数组中删除带有值的索引。我使用此代码

$max=count($_SESSION['Item']);

for($i=0;$i<$max;$i++){

 if(strpos($_SESSION['Item'][$i]['Name'],'Shipping')!== false)
 {
  unset($_SESSION['Item'][$i]);
  break;
 }

如果值存在于数组的最后一个索引中,则其工作正常。但如果它存在于两者之间。它根本不起作用。我哪里错了?

3 个答案:

答案 0 :(得分:1)

我建议使用foreach代替for。这样你的数组键就可以只有int了。并保证循环遍历所有数组项

foreach($_SESSION['Item'] as $key => $value) { 
    if (strpos($value['Name'],'Shipping')!== false) {
        unset($_SESSION['Item'][$key]);
    }
}

正如所指出的,休息将停止循环。因此,如果您只想删除单个条目,则应添加中断

答案 1 :(得分:1)

尝试使用array_splice删除项目

array_splice($_SESSION['Item'], $i, 1);

答案 2 :(得分:0)

 if(strpos($_SESSION['Item'][$i]['Name'],'Shipping')!== false)
 {
  unset($_SESSION['Item'][$i]);
 }