0

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;
 }

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

4

3 回答 3

1

我建议使用foreach而不是for. 这样,您的数组键可以更多,然后只能是 int。并且保证循环遍历所有数组项

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

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

于 2013-10-02T13:11:51.730 回答
1

尝试使用array_splice,删除项目

array_splice($_SESSION['Item'], $i, 1);
于 2013-10-02T13:13:53.057 回答
0
 if(strpos($_SESSION['Item'][$i]['Name'],'Shipping')!== false)
 {
  unset($_SESSION['Item'][$i]);
 }
于 2013-10-02T13:13:11.437 回答