РЕДАКТИРОВАТЬ: (ОБНОВЛЕНО)
Может быть, мой вопрос не был достаточно ясен. Хорошо, давайте скажем так:
$arr["a"] = 10;
var_dump($arr);
$arr["b"] =& $arr["a"];
var_dump($arr);
первый var_dump возвращает:
array
'a' => int 10
Пока возвращается второй:
array
'a' => &int 10
'b' => &int 10
Если I unset ($ arr ["a"]) , он вернет:
array
'b' => int 10
Правило состоит в том, что когда 2 или более переменных «указывают» на одно и то же содержимое, var_dump будет отображать ссылку с символом амперсанда (&).
В случае $ _SESSION, даже с register_long_arrays = Off $ _SESSION по-прежнему показывает ссылку. Таким образом, очевидно, что другая переменная также указывает на то же содержимое.
Другими словами, если я сбросил ($ _ SESSION), где-то есть еще одна переменная, с которой можно связать. В приведенном выше примере, когда я unset ($ arr ["a"]) , я все равно могу восстановить этот контент, если создаю ссылку, что-то вроде: $ arr ["z"] = & $ обр [ "б"] .
Итак, мой первоначальный вопрос был: кто-нибудь знает, ЧТО это другая переменная? Весьма вероятно, что такой переменной не существует ... но мне было интересно, почему внутри PHP эта ссылка отображается.
Спасибо
(Оригинальный вопрос:)
При создании сеанса в PHP, например:
session_start();
$_SESSION["name"] = "my name";
и сбросить глобальные переменные с помощью:
var_dump($GLOBALS);
вы увидите что-то вроде:
'HTTP_SESSION_VARS' => &
array
'name' => string 'my name' (length=7)
'_SESSION' => &
array
'name' => string 'my name' (length=7)
'HTTP_SERVER_VARS' =>
array
...
Как видите, обе переменные $ GLOBAL [HTTP_SESSION_VARS] и $ _SESSION
ссылки на содержимое другого объекта ... Кто-нибудь знает, что это за объект?
Теоретически, если я сбрасываю обе переменные, каким-то образом должен быть доступ к этому
содержание ... какая-либо подсказка?
Спасибо!