首页 > 解决方案 > 如何纠正错误,自 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]();

标签: php

解决方案


这是这样解释的:

$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]}();

推荐阅读