自PHP7.0以来,如何纠正错误、间接访问变量、属性和方法将严格按照从左到右的顺序进行评估
在我的服务器升级到PHP7.0之后,我需要一些帮助来纠正WP错误 从PHP7.0开始,对变量、属性和方法的间接访问将严格按照从左到右的顺序进行评估。使用大括号消除歧义 下面是引起问题的两行代码自PHP7.0以来,如何纠正错误、间接访问变量、属性和方法将严格按照从左到右的顺序进行评估,php,Php,在我的服务器升级到PHP7.0之后,我需要一些帮助来纠正WP错误 从PHP7.0开始,对变量、属性和方法的间接访问将严格按照从左到右的顺序进行评估。使用大括号消除歧义 下面是引起问题的两行代码 if( is_array( $default) && isset( $default[0] ) && $default[0] == 'execute' ){ $default = $default[
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]();
及
如果您的代码在PHP 5中工作,则可以使用:
$default = $default[1]->{$default[2]}();
以及:
在明显的行中。这应该可以避免“没有属性数组”错误。如果您的代码在PHP 5中工作,您应该可以使用:
$default = $default[1]->{$default[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]}();
这被解释为:
$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]}();
请注意,在PHP7.2及更高版本中,应该使用$val[1]->{$val[2]};以避免分析错误:语法错误,意外标记}。请参阅示例。注意,在PHP7.2及更高版本中,应该使用$val[1]->{$val[2]};为避免分析错误:语法错误,意外标记}。例如,见。