【问题标题】:Accessing stdClass object the right way? [duplicate]以正确的方式访问 stdClass 对象? [复制]
【发布时间】:2013-02-08 18:19:04
【问题描述】:

我有一个如下所示的 stdClass 对象:

stdClass Object
(
    [0] => stdClass Object
        (
            [id1] => Fri Feb 22 00:02:15 +0000 2013
            [id2] => 21312
            [id3] => 13552412
        )

    [1] => stdClass Object
        (
            [id1] => Fri Feb 22 00:02:15 +0000 2013
            [id2] => 21331
            [id3] => 13495842
        )
)

如何访问 ID?我发现了几个类似的问题,但没有一个对我有用。
假设对象存储在$myVar 中。

我试过$myVar->0->id1$myVar->id1$myVar->[0]->id1$myVar->['0']->id1$myVar[0]->id1,但都没有成功。

【问题讨论】:

  • 你从哪里得到这个对象?对我来说它看起来像一个强制转换的数组,所以我问自己,为什么它被强制转换为一个对象
  • @KingCrunch 我认为这是来自 Twitter 的 REST API 响应。
  • 它将是花括号$myvar->{'0'}->id1
  • 你也可以通过$myvar = (array)$myvar; 将其转换回数组并以$myvar[0]->id1 的身份访问;
  • $myvar = (array)$myvar; 完全是为我做的 :-) 将其发布为回复,我会接受。

标签: php object stdclass


【解决方案1】:

就像我在 cmets 中假设的那样,该结构看起来并不打算被视为一个对象。与其在对象上挣扎,不如让json_decode() 首先返回一个关联数组

$data = json_decode($json, true);
echo $data[0]['id1'];

【讨论】:

    【解决方案2】:

    你可以使用$myvar->{'0'}->id1

    或者您可以先将其转换为数组,然后:

    $arr = (array) $myobj;
    $arr[0]->id1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 2010-11-22
      • 2013-10-17
      相关资源
      最近更新 更多