PHP5到7代码问题,间接访问变量、属性和方法

PHP 5 to 7 code problem, Indirect access to variables, properties and methods

我最近从 PHP 5.6 迁移到 PHP 7.3 并试图修复我的所有网站并使它们保持最新。

在我的 Wordpress 主题上,我得到了很多:

Indirect access to variables, properties and methods will be evaluated strictly in left-to-right order since PHP 7.0. Use curly braces to remove ambiguity.

有问题的代码总是:

global $options;
foreach ($options as $value) {
    if (get_settings( $value['id'] ) === FALSE) { $$value['id'] = $value['std']; } else { $$value['id'] = get_settings( $value['id'] ); }
}

有人可以帮忙吗,在 PHP7 中执行此操作的正确方法是什么,因为我很困惑。特定于 if 行的错误。

在这里和 Google 上进行了搜索,但没有找到任何有用的信息。试过大括号和括号,没有。

我试过了,但没有用:

global $options;

foreach ($options as $value) {
    if (isset($value['id']) && get_option( $value['id'] ) === FALSE && isset($value['std'])) { $$value['id'] = $value['std']; }
    elseif (isset($value['id'])) { $$value['id'] = get_option( $value['id'] ); }
}

我认为它指的是可变变量,所以尝试${$value['id']}而不是$$value['id']:

foreach ($options as $value) {
    if (get_settings( $value['id'] ) === FALSE) {
        ${$value['id']} = $value['std'];
    } else {
        ${$value['id']} = get_settings( $value['id'] );
    }
}

这是 PHP 升级说明中的 relevant documentation