2013-10-02 3 views
0

Новое в 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; 
} 

его рабочий штраф, если значение существует в последнем индексе массива. Но если он существует между ними. он вообще не работает. Где я иду не так?

+0

$ _SESSION [ 'Item'] [$ я] = ' «; – tinybyte

+0

@tinyByte: Как это помогает? OP: Всегда ли будет одна запись, которую вы хотите удалить или может быть более одного? – TheWolf

+0

@ TheWolf многократная запись. но его удаление только последней пары значение/индекс –

ответ

1

Попробуйте использовать array_splice, чтобы удалить элементы

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

спасибо большое @Chokchai –

1

Я рекомендую использовать foreach вместо for. Таким образом, ваши ключи массива могут быть больше, чем только int. И гарантируется, что петля над всеми элементами массива

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

Как указано, разрыв остановит цикл. Так что если вы только хотите, чтобы удалить одну запись, вы должны добавить перерыв

0
if(strpos($_SESSION['Item'][$i]['Name'],'Shipping')!== false) 
{ 
    unset($_SESSION['Item'][$i]); 
} 
Смежные вопросы