PHP和变量变量($$)语法

时间:2016-06-03 20:33:36

标签: php variable-variables

在升级到PHP 7之前,我有这个代码,返回true

var_dump(isset($$_SESSION['payment']) );
var_dump(is_object($$_SESSION['payment'])); 
var_dump($_SESSION['payment']); // string 'moneyorder'

升级到PHP 7后,我在类中重写了相同的代码,但现在返回false

var_dump(isset(${$_SESSION['payment']})); 
var_dump(is_object(${$_SESSION['payment']}));
var_dump($_SESSION['payment']); // string 'moneyorder'

你知道为什么吗?

谢谢

1 个答案:

答案 0 :(得分:1)

注意the PHP documentation for superglobals包含此警告:

  

注意:变量

     

Superglobals不能用作函数或类方法中的变量变量。

将其保存到本地变量:

$payment = $_SESSION['payment'];
var_dump(isset(${$payment})); 
var_dump(is_object(${$payment}));