Не получается сохранить в сессии массив типа $arr[$i]

sergee

Guest
Не получается сохранить в сессии массив типа $arr[$i]

Ситуация такая. Я регистрирую в сессии массив:
PHP:
session_register('ans[]');
Присваиваю значение этому массиву:
PHP:
$_SESSION['ans[1]']=$_POST[res];
Потом извлекаю из него значение (для примера так):
PHP:
foreach($_SESSION['ans[1]'] as $k=>$v) echo("$k=>$v<br>");
Все работает. Но если я вместо 1 ставлю $i=1, т.е.:
PHP:
$_SESSION['ans[$i]']=$_POST[res];
то ничего в массив $ans не сохраняется. Что я делаю неправильно?
 

Фанат

oncle terrible
Команда форума
session_register('ans[]');
и что должна означать эта строчка?
Все работает. Но если я вместо 1 ставлю $i=1, т.е.:
$_SESSION['ans[$i]']=$_POST[res];
то ничего в массив $ans не сохраняется
и откуда у тебя в массиве возьмется элемент с индексом
ans[$i]?
 

sergee

Guest
Так вроде этой строкой я и создаю в массиве элемент с индексом $i, который равен 1. Разве нет?
 

sergee

Guest
Почему ж тогда работает в случае ans[1], я ж тоже его не регистрировал? Я регистрировал ans[].
 

Фанат

oncle terrible
Команда форума
$i=1;
echo 'ans[$i]';
что тебе выведет?
а что должно вывести?
А как правильно к двумерному массиву обращаться?
 

Фанат

oncle terrible
Команда форума
Я регистрировал ans[].
ничего ты не регистрировал.
во-первых, твоя запись не имеет смысла.
такой переменной не существует - ans[]
во-вторых, session_register не имеет смысла вообще

-~{}~ 14.01.05 20:22:

а чем тебя русский не устраивает?
 

sergee

Guest
http://ru3.php.net/session_register
Вот если конкретно про эту ссылку говорить, то там на русском токо два слова "замечание" и "предостережение"))
 

4m@t!c

Александр
sergee, перечитай все по урлам, что были выданы тебе мессагой
Автор оригинала: SiMM
Забудь про [m]session_register[/m] навсегда, как это советует мануал. Да и с массивами и строками работать научись.
А потом перечитай Весь треди и вдумайся в фразы
Фанат
во-вторых, session_register не имеет смысла вообще
и
SiMM
Забудь про session_register навсегда
Эти фразы прямы, как стрела и не имеют тайного смысла. И научись обращаться к элементам многомерного массива, суперглобальный он или локальный, это - массив.
 

sergee

Guest
Кста, получилось все так как и было, только запись $_SESSION['ans[$i]']=$_POST[res]; заменил на $_SESSION["ans[$i]"]=$_POST[res]; . Т.е. после того как поставил " " вместо ' ' ошибка пропала. А session_register на самом деле не сыграла ни какой роли. Убрал эту строку из скрипта вообще. Т.е. моя ошибка заключалась в неправильном синтаксисе при записи аргумента для $_SESSION[].

-~{}~ 15.01.05 02:49:

Да, и еще, получилось что массивы тут совсем не причем))
 

Фанат

oncle terrible
Команда форума
чучело, синтаксис у тебя так и остался неправильный.
НЕУЖЕЛИ так трудно пройти по ссылке, которую тебе дали, и посмотреть?

Впрочем, уговаривать тебя никто не будет.
НО.
Когда ты в следующий раз придешь с дурацким вопрсом, топик будет закрыт. за бесполезностью.

Да, и еще, получилось что массивы тут совсем не причем))
а $_SESSION у тебя что? беззнаковое целое?

И запомни, таких переменных - ans[], $_SESSION[] - НЕ БЫВАЕТ
бывает $ans. $_SESSION.
Доступно?
А session_register на самом деле не сыграла ни какой роли
а никто и не говорил, что играет. это у тебя просто ума хватает только на одну ссылку нажать, остальные ты просто не видишь.
роли она не играла, но и смысла в ней тоже было ноль. о чем тебе и писали.
 

sergee

Guest
Ссылки я смотрел. Все смотрел. Именно там я и прочитал прочитал про отличия записи аргументов массивов. Но только дело в том что если писать как правильно, т.е. как там сказано, то у меня ничего не работает. А при такой записи как я сказал выше все получилось. Поэтому не стоит считать что я совсем ничего не хочу слушать, запутался я в этом вопросе. Почему ж тогда мой неправильный вариант работает? И как правильно надо было писать? Подскажите...
 

4m@t!c

Александр

Orlis

Guest
вместо
$_SESSION['ans[$i]']=$_POST[res];

нужно писать
$_SESSION['ans'][$i]=$_POST['res'];
 
Сверху