Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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$\u使用$$调用发布_Php_Variables_Post - Fatal编程技术网

php$\u使用$$调用发布

php$\u使用$$调用发布,php,variables,post,Php,Variables,Post,我知道以下代码在php中是可能的: $dog = 'Woof!'; $cat = 'Miauw!'; $animal = 'dog'; var_dump($$animal); 输出:“汪!” 当然,这是我实际代码的一个简化示例,尽管如此,您还是明白了这一点。 现在我似乎无法让$\u POST变量以同样的方式工作 例如: $method = '_POST'; $$method['password'] = array(); // In the end i would want this piece

我知道以下代码在php中是可能的:

$dog = 'Woof!';
$cat = 'Miauw!';
$animal = 'dog';
var_dump($$animal);
输出:“汪!”

当然,这是我实际代码的一个简化示例,尽管如此,您还是明白了这一点。 现在我似乎无法让
$\u 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();
输出:“注意:未定义的变量:\u POST”

那么,这是否意味着不可能以这种方式调用$\u POST,或者我的做法是错误的

$$method['password'] = array();
评估结果如下:

${$method['password']} = array();
附言:你最好不要这样做。变量容易混淆,被认为是一种不好的做法

来自:

注:变量超全局 不能用作变量 内部函数或类方法


正如其他答案所概述的,在PHP中,甚至连超全局变量都不是真正的全局变量。它们需要专门导入到本地范围dict中,以便使用变量进行访问

如果您确实只想访问$\u POST和$\u GET或$\u REQUEST,那么显式语法将是:

$GLOBALS[$method]['password'] = array();

为什么要通过变量名访问$\u POST?当您执行var_dump($$method)时会得到什么?在黑暗中完成拍摄,但请尝试${$method}['password']。我想知道数组是否是问题所在,而不是变量。@Michael这允许您分散正在使用的方法,而不是使用一堆条件。使用
$$
语法是个坏消息。这并不像一个
eval()
那么糟糕,但这是一个非常接近的秒数。请尽量避免——总有比这更好的解决方案。@Spudley你有什么建议?在他的示例中,$method不再是变量,它是$\u POST数组的副本,因此不再是超全局的。@Evert$method确实不是超全局的,但Charles仍然是对的,因为最后我确实尝试使用$method通过变量调用超级全局$\u POST。在我的示例中,如果wat Charles的回答不正确,我希望使用
${$method}['password']]
而不是
${$method['password']}