Сессии и массивы - не понимаю

Rasta

Guest
Сессии и массивы - не понимаю

Извините, если тупой вопрос, но поиск по форуму ответа не дал.

Есть двухмерный массив, н-р, $cart[$i]["product"]
Как мне сохранить такую переменную в сессии?

$_SESSION["cart"][$i]["product_id"] - не работает.
 

Rasta

Guest
Originally posted by SelenIT
"product" != "product_id"

очепятка?
да, опечатка

т.е. по сути ошибки в синтаксисе нет?
значит ошибка в другом месте...

всем спасибо
 

berkut

Новичок
поставь error_reporting(E_ALL);
кстати, почему
PHP:
$i = 1;
$_SESSION['a'][$i]['z'] = 99;
выдаёт
Warning: Cannot use a scalar value as an array
а если $i равна любому числу, отличному от 1, то предупреждение вылазиет через раз?
 

4m@t!c

Александр
berkut, почитай, как должны обзываться элементы массива в переменных сеанса. Я сейчас не могу найти, но где-то в мане прочел, что имена элементов суперглобального массива не должны состоять из одних цифр. может, я и не прав, надеюсь, гуру ткнут и меня и тебя носом в ману. Хотя все логично, если register_globals = on, то как будет вести себя $_SERVER['1']?
 

MiRacLe

просто Чудо
4m@t!c
у него не _SERVER[1] , а _SERVER['a']....
.....
berkut, а вообще да, $_SESSION = array('a' => array(1 => array('z' => 99))).... у тебя имя массива - число, меняй имя , или заключай $i в кавычки, если так уже необходимо именно такая структура массива...
 

berkut

Новичок
да необходимости никакой. это просто пример.
Если нельзя использовать скалярные велечины, то почему ошибку выводит только на числе 1? Если поставить любое другое число - ошибок нет, причём время от времени появляются, в зависимости от того как звёзды встанут. Вот в этом и был мой вопрос.
Хотя все логично, если register_globals = on, то как будет вести себя $_SERVER['1']?
в данном случае как-раз не $_SERVER['1'] a $_SERVER[1]
и при чём тут register globals? Как эта опция может влиять на
$_SERVER['1']
или
$_SERVER[1]
?
 

SiMM

Новичок
Правильное имя переменной должно начинаться с буквы или символа подчеркивания с последующими в любом количестве буквами, цифрами или символами подчеркивания Это можно отобразить регулярным выражением: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
 
Сверху