Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;“建立”$_从变量中获取[';xyz';]_Php_Variables - Fatal编程技术网

Php &引用;“建立”$_从变量中获取[';xyz';]

Php &引用;“建立”$_从变量中获取[';xyz';],php,variables,Php,Variables,我有两个变量: $method = "_GET"; $var = "id"; 我现在需要这个: $parameter = $_GET['id']; 我试过这样的方法: $parameter = ${$method.'[\''.$var.'\']'}; 但它不起作用。有什么想法吗?试试: $data = $$method; $parameter = $data[ $var ]; 以下是: $method = '_GET'; $var = 'id'; $data = $$method; p

我有两个变量:

$method = "_GET";
$var = "id";
我现在需要这个:

$parameter = $_GET['id'];
我试过这样的方法:

$parameter = ${$method.'[\''.$var.'\']'};
但它不起作用。有什么想法吗?

试试:

$data = $$method;
$parameter = $data[ $var ];
以下是:

$method = '_GET';
$var = 'id';

$data = $$method;
print_r($data);
echo $data[ $var ];
filter_input(constant("INPUT" . $method), $var);
将输出:

Array
(
    [id] => test
)
test
假设查询字符串是
?id=test

@Leggendario指出了一个有趣的警告:这不会在全球范围之外起作用,即使$\u GET是一个超级全球范围。在函数中引用
$$method
之前,必须添加
global$$method

此外,结果表明:

这基本上是一个变量:

$method = '_GET';
$var = 'id';

$foo = $$method[$var];

结果证明根本不起作用。。。是啊,php的一致性,今天我学到了我的新东西

这项工作:

php > $_GET['id'] = 'foo';
php > $method = '_GET';
php > $offset = 'id';
php > echo ${$method}[$offset];
foo

事实证明,这是有文档记录的:搜索“歧义”

因为您没有集中任何字符串来形成变量名,只需将其放入
{}

$parameter = ${$method}[$var];

另一种可能的解决方案是,由于仅有的两种方法是
\u GET
\u POST
,因此使用以下方法:


您可以尝试以下方法:

$method = '_GET';
$var = 'id';

$data = $$method;
print_r($data);
echo $data[ $var ];
filter_input(constant("INPUT" . $method), $var);
函数允许您通过字符串名称引用函数的
INPUT\u GET
常量值


使用此方法,您将检索该值,并可以选择使用此页面上的进行过滤/清理,以获得额外的安全性“一体式”设置。

此方法不起作用。PHP正在尝试引用名为
$method[$var]
的变量。你得到了一个非法的字符串偏移量通知,因为
$method
是_-get。这就是我得到的,有什么想法吗?@Philip看到我的答案了,它不是一行,但我测试了它,它是有效的。图。。。是的,php解析一致性。我不知道数组不能是var-var'd…我还是最喜欢你的答案,因为你已经纠正了歧义错误,正确引用PHP文档是防止歧义的支持方法。PHP将$$method[$var]解释为${$method[$var]},所以你得到了非法的字符串偏移量。@mtinsley我的错误。固定的!很好的更新,使它与一个班轮工作。我认为没有办法做到这一点我刚刚添加了我用来测试这个的代码。请看一看,让我知道是否还有问题。当我在空白的php脚本中使用它时,它是有效的,但在我的类中它不起作用。。我需要弄清楚这一点guess@Philip您需要添加
global$$方法
之前。before
$data=$$method。你需要它,因为你不在全球范围内。而
\u GET
是全局的。$parameter=“$”$method.[“$var.””;