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


Using array value with index as Variable Variable

标题可能有点混乱。这是我的问题:

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

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

那会打印:"你好"。现在,我对此有问题:

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

这给了我一个PHP错误(它说$somearray['name']是一个未定义的变量)。你能告诉我这是否可能,我做错了什么吗?或者,如果这显然是不可能的,你能给我另一个解决方案来做类似的事情吗?

提前谢谢。

目前,我只能想到这样的事情:

<?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:动态访问数组值):

PHP 语言的语法只允许在变量表达式的末尾使用下标符号,而不允许在一般的表达式中使用下标符号,这是它在大多数其他语言中的工作方式。

PHP是否允许在任何地方使用下标符号,可以将其写得更密集

echo $$vv["Hello"]

旁注:我想在生产中使用变量并不是那么理智。

这个怎么样?(注意:变量变量和goto一样糟糕)

$variablename = 'array';
$key = 'index';
echo $$variablename[$key];