1

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

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

有谁知道为什么?

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

4

1 回答 1

1

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

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

请参阅演示,在 PHP < 7.2.0 中,强制(object)转换转换为整数属性但json_decode创建字符串属性。

于 2019-04-10T20:12:22.357 回答