将PHP数组转换为对象

6

可能是重复问题:
将带有数字键的数组转化为对象

我对从数组到对象的转换感到困惑了:

$arr = range(1,3);
$obj = (object) $arr;
var_dump($obj)

object(stdClass)#2 (5) {
  [0]=>
    int(1)
  [1]=>
    int(2)
  [2]=>
    int(3)
}

问题是:如何在这种情况下访问对象属性?$obj->0会导致语法错误。

假设$obj->{0}也失败了? - halfer
3个回答

4

除非你将其转换为数组,否则无法访问这些对象属性。如果由于某种原因必须这样做,请将数组键设置为其他值。


2
在这种情况下,我唯一能想到的是使用类似于以下代码的foreach来访问属性:
foreach($obj as $key => $value)
   var_dump("$key => $value");

但当然这并不能解决根本问题。


好的,那不是我的问题 - 我只是想知道。我又一次被说服了,PHP很奇怪。对于重复造成的麻烦,我感到抱歉! - biera

1

看起来ArrayObject类可以访问属性

$a = new ArrayObject($obj);
echo $a[0];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接