Почему я получаю только первый символ в массиве, хранящемся в сеансе?

#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; . Не делайте этого