【问题标题】:PHP casting array to object [duplicate]PHP将数组转换为对象[重复]
【发布时间】:2012-04-19 20:45:40
【问题描述】:

可能重复:
Casing an Array with Numeric Keys as an Object

我做了一个从数组到对象的转换,我很困惑:

$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} 也失败了?

标签: php casting


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在这种情况下,我唯一能想到的就是使用 foreach 访问属性,如下所示:

    foreach($obj as $key => $value)
       var_dump("$key => $value");
    

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

    【讨论】:

    • 好吧,这不是我的问题——我只是想知道。我再次说服自己 PHP 很奇怪。抱歉重复!
    【解决方案3】:

    看来 ArrayObject 类可以访问属性

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

    【讨论】:

      猜你喜欢
      • 2018-03-18
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 2021-11-04
      相关资源
      最近更新 更多