使用带索引的数组值作为变量

时间:2012-06-28 00:05:24

标签: php variable-variables

标题可能有点令人困惑。这是我的问题:

我知道你可以在另一个变量中保存变量名,然后读取第一个变量的内容。这就是我的意思:

$variable = "hello"
$variableholder = 'variable'
echo $$variableholder;

那将打印:“你好”。现在,我遇到了一个问题:

$somearray = array("name"=>"hello");
$variableholder = "somearray['name']"; //or $variableholder = 'somearray[\'name\']';
echo $$variableholder;

这给了我一个PHP错误(它说$ somearray ['name']是一个未定义的变量)。你能告诉我这是否可行而且我做错了什么;或者如果这根本不可能,你能给我另一个解决办法吗?

提前致谢。

2 个答案:

答案 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];