Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自PHP7.0以来,如何纠正错误、间接访问变量、属性和方法将严格按照从左到右的顺序进行评估_Php - Fatal编程技术网

自PHP7.0以来,如何纠正错误、间接访问变量、属性和方法将严格按照从左到右的顺序进行评估

自PHP7.0以来,如何纠正错误、间接访问变量、属性和方法将严格按照从左到右的顺序进行评估,php,Php,在我的服务器升级到PHP7.0之后,我需要一些帮助来纠正WP错误 从PHP7.0开始,对变量、属性和方法的间接访问将严格按照从左到右的顺序进行评估。使用大括号消除歧义 下面是引起问题的两行代码 if( is_array( $default) && isset( $default[0] ) && $default[0] == 'execute' ){ $default = $default[

在我的服务器升级到PHP7.0之后,我需要一些帮助来纠正WP错误

从PHP7.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]();


如果您的代码在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]};为避免分析错误:语法错误,意外标记}。例如,见。