Проблема переменных переменных php

$_POST['asdf'] = 'something'; function test() { // NULL -- not what initially expected $string = '_POST'; echo '===='; var_dump(${$string}); echo '===='; // Works as expected echo '++++++'; var_dump(${'_POST'}); echo '++++++'; // Works as expected global ${$string}; var_dump(${$string}); } // Works as expected $string = '_POST'; var_dump(${$string}); test(); 

Я не понимаю, почему такое поведение .. может кто-нибудь объяснить .. Мне нужно знать, почему такое поведение. Я на самом деле не получаю код ..

Solutions Collecting From Web of "Проблема переменных переменных php"

PHP не имеет реальных глобальных переменных. «Суперглобалы» также являются неправильным. $_POST и $_GET никогда не присутствуют в хэш-таблицах локальных переменных. Они существуют как псевдонимы, которые PHP видит только для обычных доступов. Метод доступа переменной переменной всегда смотрит в текущую локальную хеш-таблицу.

 global $$string; // $$string = & $GLOBALS[$string]; 

Является отличным трюком для создания ссылки на суперглобалы в локальной хэш-таблице. Вот почему после этого утверждения вы можете использовать переменные переменные для доступа к «суперглобалам».

Посмотрите здесь

Обратите внимание, что переменные переменные не могут использоваться с массивами Superglobal от PHP в рамках функций или методов класса. Переменная $ this также является специальной переменной, на которую нельзя ссылаться динамически.