如何访问对象中的动态 属性?

How do you access a dynamic property in an object?

我正在将数组转换为对象并尝试访问密钥(或 属性),但它不起作用。下面的代码 returns type 8 -- Undefined property: stdClass::。我尝试使用 property_exists(),但也失败了。

$var = (object)array('1' => 'Object one','2' => 'Object two');
$num = "2";
var_dump( $var->$num );

有人知道为什么吗?

更新:无论属性是字符串还是整数,这似乎都是一个问题。

这在 PHP < 7.2.0 中不起作用,问题是字符串整数数组键实际上被转换为整数 属性 名称,而不是字符串。从数组中获取对象的另一种方法可行:

$var = json_decode(json_encode(array('1' => 'Object one','2' => 'Object two')));
$num = "2";
var_dump( $var->$num );

参见 Demo,在 PHP < 7.2.0 中,(object) 转换为整数属性,但 json_decode 创建字符串属性。