Используйте переменные-переменные с суперглобальными массивами

Интересно, можно ли динамически читать суперглобальные переменные, я хотел бы сделать что-то вроде этого:

<?php

    $n = 'GET';
    $var = '$_'.$n.'[\'something\']'; // pour lire $_GET['something'] 
    echo $var;

//Or 

    $n = 'POST';
    $var = '$_'.$n.'[\'something\']'; // pour lire $_POST['something'] 
    echo $var;

?>

Этот код не работает так, как я хочу, но я хотел бы знать, работает ли он в PHP?


person onnynneji    schedule 03.04.2015    source источник
comment
Не могли бы вы опубликовать свой полный код? почему вы хотите сделать это именно так?   -  person Keep Coding    schedule 03.04.2015


Ответы (2)


Вы не можете использовать переменные с суперглобальными переменными, функциями или методами класса и не с $this.

И цитата из мануала (прямо перед комментариями пользователя, если поискать):

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

person Rizier123    schedule 03.04.2015

Спасибо, это именно то, что я ищу

Но мы не можем использовать это в функции, пожалуйста?

$n = '_GET';

// don't work => Undefined variable: _GET
function f($n) {
    echo ${$n}['a'];
}
f($n);

//work fine
echo ${$n}['a'];
person onnynneji    schedule 03.04.2015