PHP 7致命错误:未捕获错误:不能将字符串偏移用作数组

时间:2018-02-11 08:08:55

标签: php arrays php-7.1

在任何人将我的问题标记为重复之前,我想澄清一下,我的案例是独特的,并且特定于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中有没有不同/更好的方法来实现这一点?

1 个答案:

答案 0 :(得分:0)

我终于破解了这个问题的原因。我正在使用超全局变量$_ENV存储我的值,并尝试为其分配变量变量。但是从PHP文档中,我发现在超级全局变量上 不支持变量变量。我将变量更改为$GLOBAL而不是$_ENV(如下所示),并且可以正常工作。

$GLOBAL['validate'][$this->fldSection][$this->name] = $params;

我不确定为什么它只能在5.6而不是7.1上运行。我猜想PHP可能仅从v7开始严格执行这些规则。