0

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

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

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

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

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

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

提前致谢。

4

2 回答 2

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"]

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

于 2012-06-28T00:12:52.073 回答
1

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

$variablename = 'array';
$key = 'index';

echo $$variablename[$key];
于 2012-06-28T00:52:54.147 回答