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

时间:2019-04-10 19:52:33

标签: php dynamic-properties

我正在将数组强制转换为对象,并尝试访问键(或属性),但是它不起作用。以下代码返回type 8 -- Undefined property: stdClass::$2。我尝试使用property_exists(),但是也失败了。

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

有人知道为什么吗?

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

1 个答案:

答案 0 :(得分:1)

这在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创建字符串属性。