我正在将WordPress网站从PHP 5.5更新到PHP 7.2。
PHP兼容性检查器建议页眉和页脚使用以下内容:
27和30 |错误|自PHP 7.0起,将严格按照从左到右的顺序评估对变量,属性和方法的间接访问。使用花括号消除歧义。
24-33行显示:
---摘自Header.php ---
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'] );
}
}
?>
---摘自Header.php ---
第27行显示为:
$$value['id'] = $value['std'];**
第30行显示为:
$$value['id'] = get_option( $value['id'] );
我应该如何使用花括号来修复上面的两个语句?
答案 0 :(得分:1)
这是动态变量名$$value['id']
。
在早期/较旧的PHP版本中,可以这样声明,但从PHP 7.0开始,您需要使用花括号使其更具可读性/明显性,并避免混淆:
${$value['id']} = $value['std'];
${$value['id']} = get_option( $value['id'] );
有关更多详细信息,请参见PHP - Variable variables。