我有两个变量:
$method = "_GET";
$var = "id";
我现在需要这个:
$parameter = $_GET['id'];
我试过这样的事情:
$parameter = ${$method.'[\''.$var.'\']'};
但它不起作用。有什么想法吗?
答案 0 :(得分:2)
尝试:
$data = $$method;
$parameter = $data[ $var ];
以下内容:
$method = '_GET';
$var = 'id';
$data = $$method;
print_r($data);
echo $data[ $var ];
将输出:
Array
(
[id] => test
)
test
假设查询字符串为?id=test
global $$method
,然后才能在函数中引用$$method
。
另外,结果是there is a one-liner that will do this:
${$method}[$var];
答案 1 :(得分:1)
由于您没有集中任何字符串来形成变量名称,只需将其放入{}
:
$parameter = ${$method}[$var];
另一种可能的解决方案,因为_GET
和_POST
只有两种方法,而是使用ternary operator代替:
$parameter = $method == "_GET" ? $_GET[$var] : $_POST[$var];
答案 2 :(得分:0)
这基本上是一个变量变量:
$method = '_GET';
$var = 'id';
$foo = $$method[$var];
击> <击> 撞击>
原来根本不起作用......我的PHP一致性,今天我已经学会了我的新东西。
这有效:
php > $_GET['id'] = 'foo';
php > $method = '_GET';
php > $offset = 'id';
php > echo ${$method}[$offset];
foo
并且结果已被记录:http://php.net/manual/en/language.variables.variable.php搜索&#34;歧义&#34;
答案 3 :(得分:0)
您可以尝试以下方法:
filter_input(constant("INPUT" . $method), $var);
constant()
函数允许您按字符串名称引用filter_input()
函数的INPUT_GET
常量值。
使用此方法,您正在检索该值,并可以使用此页面上的filter values对其进行过滤/清理,以便在一次设置中获得额外的安全性。