Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические переменные, Динамическое использование $_SESSION 
V
    Опции темы
mgukov
Дата 25.6.2010, 15:08 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 22.3.2009

Репутация: нет
Всего: нет



Мне нужно динамически использовать глобальные предопределенные php массивы ($_SESSION, $_GET), т. е. с использованием оператора $$
Код
<?php
    $_SESSION[1] = "one";
    $name = "_SESSION";
    $arr = &${$name};
    $arr[3] = "three";
    $_SESSION[2] = "two";

    print_r($arr);
    print_r($_SESSION);
?>

Вывод: 
Код
Array ( [1] => one [3] => three [2] => two ) 
Array ( [1] => one [3] => three [2] => two )

Если же поместить данный фрагмент кода в тело функции и затем вызвать ее 
Код
<?php
function test()
{
    $_SESSION[1] = "one";
    $name = "_SESSION";
    $arr = &${$name};
    $arr[3] = "three";
    $_SESSION[2] = "two";
    print_r($arr);
    print_r($_SESSION);
}
test();
?>

получаем:
Код
Array ( [3] => three ) 
Array ( [1] => one [2] => two )

Причем если вместо '$arr = &${$name}' написать '$arr = &${"_SESSION"}' работает как в первом случае.

Почему так происходит?

PHP 5.3.2

з. ы.
Использование $GLOBALS[$name] вместо ${$name} работает корректно


Это сообщение отредактировал(а) mgukov - 25.6.2010, 15:11
PM MAIL   Вверх
Kano
Дата 25.6.2010, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.2.2009

Репутация: 1
Всего: 0



Цитата(mgukov @  25.6.2010,  15:08 Найти цитируемый пост)
Мне нужно динамически использовать глобальные предопределенные php массивы ($_SESSION, $_GET), т. е. с использованием оператора $$

Тебе это не нужно.
PM MAIL   Вверх
mgukov
Дата 25.6.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 22.3.2009

Репутация: нет
Всего: нет




Я же не спрашиваю - мне это нужно или нет, я спрашиваю почему так происходит
PM MAIL   Вверх
Kano
Дата 25.6.2010, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 23.2.2009

Репутация: 1
Всего: 0



mgukov, сорри. http://php.net/manual/en/language.variables.variable.php
Цитата

Please note that variable variables cannot be used with PHP's Superglobal arrays  within functions or class methods.

PM MAIL   Вверх
mgukov
Дата 25.6.2010, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 22.3.2009

Репутация: нет
Всего: нет



Спасибо, понятно. Помню где то это уже читал, но не был уверен
PM MAIL   Вверх
AXS
Дата 27.6.2010, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 26.9.2008
Где: РК

Репутация: -1
Всего: -1



И вообще - $$ - ЗЛО  smile 
--------------------
<><><> AXS - Live Organizer v1.0  <><><> 0_o
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.