所有,我有一个在顶部定义了一些变量的类,如下所示:
var $conditionStyle = '';
稍后,我可以对以下内容进行样式设置:
$this -> conditionStyle = 'someStyle';
或类似这样的多种事情:
$this->conditionStyle[$this->styleRowsCount] = 'someStyle';
接下来,我将查看conditionStyle是否为数组:
if(is_array($this-> conditionStyle) {...}
在php 7.0及更早版本中,此评估很好。在7.2中,我必须使用settype()
,否则无法正确评估。这是7.2的问题,还是7.2纠正了先前版本中的缺陷?
答案 0 :(得分:4)
PHP 7.1更改了此代码的行为:
$x = '';
$x[3] = 'foo';
在<7.1中,$x
是:
array (
3 => 'foo',
)
在> = 7.1时,是:
string ' f'
此更改在PHP 7.1 Release Notes中被严重地提及:
字符串不再支持空索引运算符
将空索引运算符应用于字符串(例如$ str [] = $ x)会引发致命错误,而不是无声地转换为数组。
进行此更改的PR也有您注意到的副作用,在该页面的“注释”部分中为someone else commented。
您应该从一开始就将变量初始化为数组,以在所有版本中使用。