我正在将数组强制转换为对象,并尝试访问键(或属性),但是它不起作用。以下代码返回type 8 -- Undefined property: stdClass::$2
。我尝试使用property_exists()
,但是也失败了。
$var = (object)array('1' => 'Object one','2' => 'Object two');
$num = "2";
var_dump( $var->$num );
有人知道为什么吗?
更新:无论属性是字符串还是整数,这似乎都是一个问题。
答案 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
创建字符串属性。