在任何人将我的问题标记为重复之前,我想澄清一下,我的案例是独特的,并且特定于PHP 7(我在UniformServer中使用PHP 7.1.1)。我在这里看到了所有其他类似的问题,但它们对我不起作用。
我有一个如下工作代码:
在类构造函数中:
$this->fldSection = "header";
在另一个函数中向下:
$_ENV['validate'][$this->fldSection][$this->name] = $params;
这在PHP 5.6中运行良好。然而,这给了臭名昭着的"不能使用字符串偏移作为数组。"在$this->fldSection = 'header'
变量
$_ENV
时,PHP 7.1.1中的错误
我的所有变量都是动态填充的。在PHP 7.1.1中有没有不同/更好的方法来实现这一点?
答案 0 :(得分:0)
我终于破解了这个问题的原因。我正在使用超全局变量$_ENV
存储我的值,并尝试为其分配变量变量。但是从PHP文档中,我发现在超级全局变量上 不支持变量变量。我将变量更改为$GLOBAL
而不是$_ENV
(如下所示),并且可以正常工作。
$GLOBAL['validate'][$this->fldSection][$this->name] = $params;
我不确定为什么它只能在5.6而不是7.1上运行。我猜想PHP可能仅从v7开始严格执行这些规则。