php $ _POST с помощью вызова $$ - PullRequest
2 голосов
/ 27 апреля 2011

Я знаю, что следующий фрагмент кода возможен в php:

$dog = 'Woof!';
$cat = 'Miauw!';
$animal = 'dog';
var_dump($$animal);

Вывод: 'Woof!'

Конечно, это упрощенный пример моего реального кода, тем не менее, вы поняли идею. Теперь я не могу заставить переменную $_POST действовать так же.

Пример:

$method = '_POST';
$$method['password'] = array();
// In the end i would want this piece of code above to do what i typed below
$_POST['password'] = array();

Вывод: 'Примечание: неопределенная переменная: _POST'

Значит ли это, что нельзя так называть $ _POST или я делаю это неправильно?

Ответы [ 3 ]

5 голосов
/ 27 апреля 2011

Из php manual :

Примечание: Переменные переменные Суперглобальные переменные нельзя использовать в качестве переменных переменных внутри функций или методов класса.

3 голосов
/ 27 апреля 2011

Как указано в других ответах, даже суперглобалы не являются настоящими глобалами в PHP. Их необходимо специально импортировать в локальную область видимости, чтобы они были доступны с переменными переменными.

Если вы действительно хотите получить доступ только к $ _POST и $ _GET или $ _REQUEST, то явный синтаксис будет таким:

$GLOBALS[$method]['password'] = array();
1 голос
/ 27 апреля 2011
$$method['password'] = array();

оценивается как:

${$method['password']} = array();

П.С .: Возможно, вам лучше этого не делать. Переменные переменные сбивают с толку и считаются немного плохой практикой.

...