1

下面是代码示例:

$test = array(
    1 => 'one',
    2 => 'two',
    3 => 'three'
);

$arrayName = 'test';

error_log(print_r($$arrayName, 1));
error_log($$arrayName[1]);

输出:

 Array
(
    [1] => one
    [2] => two
    [3] => three
)
PHP Notice:  Undefined variable: e in /Applications/MAMP/htdocs/_base/test.php on line 12

我希望第二行会输出“一个”,但显然它不起作用。似乎括号具有更高的解析优先级,因此 $arrayName 在这里被视为数组。

我首先尝试使用大括号来包装 $$arrayName,但不知何故会导致 PHP Parse 错误。由于最终我将需要使用 unset 来删除选定的元素,因此使用临时变量来存储数组并不理想。想知道是否有任何方法可以在一行内实现这一目标。任何见解表示赞赏!

4

1 回答 1

2

利用:

error_log(${$arrayName}[1]);

请参阅可变变量的 PHP 文档。它说明您必须使用大括号来解决歧义。它需要知道您是想$$arrayName用作变量还是$arrayName[1]用作变量。

于 2014-01-06T22:50:17.267 回答