【发布时间】:2018-07-21 15:01:52
【问题描述】:
在有人将我的问题标记为重复之前,我想澄清一下我的情况是独一无二的,并且特定于 PHP 7(我在 UniformServer 中使用 PHP 7.1.1)。我在这里看到了所有其他类似的问题,但它们对我不起作用。
我有一个工作代码如下:
在类构造函数中:
$this->fldSection = "header";
在下面的另一个函数中:
$_ENV['validate'][$this->fldSection][$this->name] = $params;
这在 PHP 5.6 中运行良好。但是,当在 $_ENV 变量中设置 $this->fldSection = 'header' 时,这会在 PHP 7.1.1 中出现臭名昭著的“不能将字符串偏移量用作数组..”错误
我所有的变量都是动态填充的。在 PHP 7.1.1 中是否有不同/更好的方法来实现这一点?
【问题讨论】:
-
我怀疑
$_ENV['validate']是一个字符串或$_ENV['validate'][$this->fldSection]是一个字符串 -
我做了一个 $_ENV 的转储,那是一个数组。 ($_ENV 实际上是一个标准的 PHP 全局数组)。我在网上看到的信息表明这是因为
$this->fldSection被定义为文本(“标题”),后来被用作数组键。但是这段代码在 PHP 5.6 中可以完美运行。我试图了解 7.1 在这方面发生了什么变化以及如何缓解这种情况。 -
@Ravi 你能提供
$_ENV的var_dump吗?