标题可能有点令人困惑。这是我的问题:
我知道你可以在另一个变量中保存变量名,然后读取第一个变量的内容。这就是我的意思:
$variable = "hello"
$variableholder = 'variable'
echo $$variableholder;
那将打印:“你好”。现在,我遇到了一个问题:
$somearray = array("name"=>"hello");
$variableholder = "somearray['name']"; //or $variableholder = 'somearray[\'name\']';
echo $$variableholder;
这给了我一个PHP错误(它说$ somearray ['name']是一个未定义的变量)。你能告诉我这是否可行而且我做错了什么;或者如果这根本不可能,你能给我另一个解决办法吗?
提前致谢。
答案 0 :(得分:1)
目前,我只能想到这样的事情:
<?php
// literal are simple
$literal = "Hello";
$vv = "literal";
echo $$vv . "\n";
// prints "Hello"
// for containers it's not so simple anymore
$container = array("Hello" => "World");
$vv = "container";
$reniatnoc = $$vv;
echo $reniatnoc["Hello"] . "\n";
// prints "World"
?>
这里的问题是(引自php: access array value on the fly):
PHP语言的语法只允许在变量表达式的末尾加上下标符号,而不是通常的表达式,这就是它在大多数其他语言中的工作方式。
PHP是否允许在任何地方使用下标符号,可以将其写为更密集的
echo $$vv["Hello"]
附注:我想在生产中使用variable variables isn't that sane。
答案 1 :(得分:1)
这个怎么样? (注意:变量和goto一样糟糕)
$variablename = 'array';
$key = 'index';
echo $$variablename[$key];