спонтанное обнуление элемента массивав сессии

КириллМиф

Новичок
спонтанное обнуление элемента массива в сессии

После обращения к переменной сессии:
PHP:
if($_SESSION["box"][$i] == $box)
выводиться сообщение :
Notice: Uninitialized string offset: 1 in z:\**.php on line 1092

и все значения переменных $_SESSION["box"][$i] при этом исчезают.
Что происходит? (PHP Version 4.4.0)
 

jrip

Новичок
после
if($_SESSION["box"][$i] == $box)
с массивом ничего не происходит, специально, на всякий случай, проверил.
 

Фанат

oncle terrible
Команда форума
а если сделать тестовый скрипт, не из 1000 строчек, а из двух - ситуация повторяется?

-~{}~ 26.04.06 19:22:

jrip
это не обязательно.
достаточно изменить переменную $box... ;-)
 

jrip

Новичок
Фанат
в смысле? какая разница с чем сравнивать? разве при операции сравнения массив может измениться?

из его поста:
"и все значения переменных $_SESSION["box"][$i] при этом исчезают"
как я понял, он намекает, что у него происходит что-то непонятное с массивом $_SESSION после сравнения, этого же быть не может? или я что-то недопонял....
 

КириллМиф

Новичок
На самом деле это не 1092, а 109 строчка. В файле всего 170 строчек. Извините за неточность.
 

cDLEON

Онанист РНРСlub
КириллМиф
Ну чего сдесь не понятного....Сессия твоя пустует, а не пропадает, а при проверке ты обращаешься к массиву которого нет. Поэтому выдаёт ошибку. print_r($_SESSION["box"]) поможет.
Можешь так же просмотреть весь массив
print_r($_SESSION);
А вообще юзай её почаще. Так же придумана для отладки var_dump($var); ф-я.... Учится и ещё раз учится.
 

Фанат

oncle terrible
Команда форума
jrip
ты зараз асиливаешь только одну строчку? две не получается? =)
 

for_i_0

Новичок
jrip
ему вдолбивают что у него что - то с переменной $box, а про исчезновения массива еще никто не говорил при сравнении с переменной.

КириллМиф
а где $box объявляется и как самое главное ?
 

Фанат

oncle terrible
Команда форума
for_i_0
никто ничего не вдалбивает.
это всего лишь одно из возможных объяснений.
 

jrip

Новичок
cDLEON
он же написал "исчезает" :) почему ты вдруг решил, что пустует?

КириллМиф
Какая разница 1092 или 170, если ты считаешь, что нашёл в каком месте проблема - так напиши скрипт из пары-тройки строчек именно с проблемным местом.
к примеру:
<?php
session_start();
$box='wedwewefwef';
$i=1;
$_SESSION['box'][2]='efrferf';
$_SESSION['x34']='test';
echo('<pre>');
print_r($_SESSION);
if($_SESSION['box'][$i] == $box){echo(0);}
print_r($_SESSION);
?>
в массиве что-то изменилось?
 

for_i_0

Новичок
Фанат
и то верно.

>>он же написал "исчезает"

он много чего может написать только вот парсер не может лгать.
 

cDLEON

Онанист РНРСlub
for_i_0
Да ты на $box не смотри.....Не из-за неё компиллер залупаицца. Либо $_SESSION["box"] не массив, либо не существует, либо $_SESSION["box"][$i] не существовало ранее.
Судя по словам "и все значения переменных $_SESSION["box"][$i] при этом исчезают." - $_SESSION["box"] пустая либо не существующая переменная.
 

jrip

Новичок
гм...
было написано
"и все значения переменных $_SESSION["box"][$i] при этом исчезают. " как я понял из этого высказывание был массив, к нему обратились и он гнусно исчез...

2Аффтар так в чём всё-таки проблема-то? :)
 

master_x

Pitavale XXI wieku
КириллМиф
дай значение $i при котором возникает проблема
 

Фанат

oncle terrible
Команда форума
cDLEON
а мне ты тоже посоветуешь на $box не смотреть?
или, всё же, постесняешься?
 

jrip

Новичок
кстати, судя по нотису $_SESSION['box'] - это строка, причём пустая....

я наконец-то понял о чём Фанат говорил про $box :))))
 

КириллМиф

Новичок
ВСЁ! я нашёл ошибку. Вот в чем дело:

В условии я пытаюсь сравнить одну и ту же переменную, т. к. $_SESSION['box'] и $box (и там и там "box"). Определяя переменную $box, я затирал массив $box[$i], который хранился в сессии. Предупреждение (Notice) появлялось, потому что в условии я пытался обратиться к массиву которого уже нет.


Большое спасибо всем за проявленный интерес.
 

cDLEON

Онанист РНРСlub
Фанат
Советывать не буду, думаю и сам поймёшь =). Лучше с датами мне помог бы в топе или ради принципа не заходишь туда?
Чем дискуссии разводить сдесь ))).
 
Сверху