php - 如何纠正错误,自 PHP 7.0 起,对变量、属性和方法的间接访问将严格按照从左到右的顺序进行评估
问题描述
在我的服务器升级到 php 7.0 后,我需要一些帮助来纠正 WP 错误
自 PHP 7.0 起,对变量、属性和方法的间接访问将严格按照从左到右的顺序进行评估。使用花括号消除歧义
这是导致问题的两行
if( is_array( $default) && isset( $default[0] ) && $default[0] == 'execute' ){
$default = $default[1]->$default[2]();
}
else if( isset( $this->ops[$id]['default'] ) ){
$val = $this->ops[$id]['default'];
if( is_array( $val ) && isset( $val[0] ) && $val[0] == 'execute' ){
$val = $val[1]->$val[2]();
}
我会把 { 括号放在哪里
引用这两个特定的行
$default = $default[1]->$default[2]();
和
$val = $val[1]->$val[2]();
解决方案
这是这样解释的:
$val = $val[1]->$val[2]();
PHP 5:
$val = {$val[1]}->{$val[2]}();
PHP 7:
$val = ($val[1]->$val)[2]();
因此,要消除歧义,请使用带有花括号的 PHP 5 示例:
$val = {$val[1]}->{$val[2]}();
推荐阅读
- java - JCheckBoxMenuItem 的刻度和 JMenuItem 的图像未对齐
- ios - 如何隐藏 iOS 框架的私有模块?
- pandas - 在 spark scala 中将数据帧转换为转换后的数据帧
- c# - CodeDom 编译器版本问题
- optimization - 我的模拟退火实现有什么问题?
- ios - 当部署目标低于 iOS 13.0 时,iOS 构建到设备不工作
- java - 在线程中使用 forEach 循环引用的线程安全
- javascript - 将长文本字符串转换为正确的 HTML
- c# - 有没有办法在表单上确定对象的优先级?
- javascript - 将 appium 设置更改为在模拟器中没有应用程序的新状态