以下是代码示例:
$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
我希望第二行输出'one',显然它不起作用。似乎括号具有更高的解析优先级,因此$ arrayName在此处被视为数组。
我尝试首先使用花括号来包装$$ arrayName,不知怎的,它会导致PHP Parse错误。由于最终我将需要使用unset来删除所选元素,因此使用临时变量来存储数组并不理想。不知道是否有任何方法可以在一行内实现这一目标。任何见解都表示赞赏!
答案 0 :(得分:2)
使用:
error_log(${$arrayName}[1]);
请参阅Variable Variables的PHP文档。它解释了你必须使用大括号来解决歧义。它需要知道您是要将$$arrayName
用作变量还是$arrayName[1]
作为变量。