php - PHP 7.2 is_array 不评估为真
问题描述
所有,我有一个类,在顶部定义了一些变量,如下所示:
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 纠正了以前版本中的缺陷?
解决方案
PHP 7.1 改变了这段代码的行为:
$x = '';
$x[3] = 'foo';
在 < 7.1 中,$x
是:
array (
3 => 'foo',
)
而在 >= 7.1 中,它是:
string ' f'
PHP 7.1 发行说明中很少提及此更改:
字符串不再支持
空索引运算符 将空索引运算符应用于字符串(例如 $str[] = $x)会引发致命错误,而不是静默转换为数组。
进行此更改的 PR 也有您注意到的副作用,正如其他人在该页面的注释部分中评论的那样。
您应该在一开始就将变量初始化为数组以在所有版本中工作。
推荐阅读
- python - 如何在python中查找每n(50)行的模式?
- json - 将 JSON 解析为表格(Wordpress)
- python - 使用 PYTHON 3.5 和 Backtrader 使用 GPU 运行优化过程
- php - WordPress 自定义主题将转到 404.php
- javascript - Apollo 查询返回错误“预期字符串,找到字符串”
- python - Allure-behave 不将失败的西装报告为“失败”
- javascript - 如何设置完整的日历以显示下个月
- android - 从接收器设置时 setAlarmClock 不起作用
- django - 无法在 Windows 8.1 机器上激活 Conda 虚拟环境
- php - 使用浮动选项 mpdf 在同一页面上的 div