#php
#php
Вопрос:
У меня есть массив (результат запроса mysql), хранящийся в переменной $_SESSION.
Теперь я пытаюсь получить доступ к элементу этого массива, например:
$_SESSION["template"]["key"]
Теперь проблема в том, что он выдает только первый символ строки «ключ». Как ни странно, он отлично работает на localhost, а также на моем предыдущем хостинге. (Сейчас я нахожусь на hostgator).
Что я делаю не так?
Ответ №1:
это означает, что ваша $_SESSION["template"]
переменная является строкой, таким образом, $_SESSION["template"]["key"]
вычисляется $_SESSION["template"][0]
и возвращает первый символ.
Почему ваш $_SESSION[«template»] является строкой, а не массивом — это вопрос отладки. Вы можете запустить его прямо сейчас.
Если у вас есть register_globals
on и вызывается какая-либо переменная $tamplate
, она может переписать содержимое $_SESSION
Комментарии:
1. Хорошо, понял. Затем я должен хранить все переменные отдельно. Нет ли способа хранить массивы и другие типы данных в СЕАНСЕ?
2. @ShashankJain: Это так. Просто измените «шаблон» на массив
3. @ShashankJain Да. Вы можете хранить массивы и объекты в сеансе.
4. я сохранил результат mysql_fetch_array в $_SESSION[«template»] . например
$info = mysql_fetch_array($result);
, и$_SESSION["template"] = $info;
это неправильно?5. @ShashankJain код в порядке, есть какой-то другой код, который делает его неправильным. смотрите Обновление по одной из возможных причин
Ответ №2:
Проблема в том, что $_SESSION["template"]
это не массив, а строка. ["key"]
рассматривается как индекс [0]
, который приводит к первому символу
Итак, ваш код такой же, как $_SESSION["template"][0]
Комментарии:
1. О!! Итак, есть ли выход из этого? За исключением того, что я должен хранить переменные отдельно.
2. @ShashankJain: у вас должен быть «шаблон» в виде массива, чтобы иметь возможность делать такие вещи. Ваш «шаблон» в настоящее время является строкой
3. но я сохранил результат mysql_fetch_array в $_SESSION[«template»] .
4. @ShashankJain: Вероятно, вы этого не сделали.
5. @ShashankJain: Вы допустили ошибку здесь
$_SESSION["template"] = $info;
. Не делайте этого