【问题标题】:Parsing a timestamp based PHP std class obkect解析基于时间戳的 PHP stdclass 对象
【发布时间】:2023-03-23 13:18:01
【问题描述】:

我有一个 PHP 标准类对象,它是从 API 上的 REST 调用的 json_decode 转换而来的,如下所示:

Array
(
    [1437688713] => stdClass Object
        (
            [handle] => Keep it logically awesome.
            [id] => 377748
            [ping] => stdClass Object
                (
                    [url] => https://api.me.com
                    [id] => 377748
                    [name] => web
                    [active] => 1
                    [events] => Array
                        (
                            [0] => data_new
                            [1] => data_old
                        )

到目前为止,我在解析任何 PHP 对象方面都没有问题。但是,这个失败了,因为我无法使用键访问嵌套对象元素,因为 1437688713 未分配给键,如果我尝试这样做,访问对象将失败:

$object->1437688713->handle

有没有办法访问这些元素?

更新:还有一件事,我永远不会提前知道这个值 (1437688713)。就像一把钥匙。我得到的只是一个我必须解析的 stdclass 对象。

【问题讨论】:

  • $object[1437688713]->handle ?
  • 还有一件事,我永远不会提前知道这个值。就像一把钥匙。
  • @Rizier123 它不是 abt 数组,它 abt 数组内的 stdclass 对象
  • @viral 同样的事情,我不知道会有什么价值。否则它可能总是被硬编码
  • @CodeMonkey 但您总是想访问第一个元素?

标签: php json stdclass


【解决方案1】:

数据的外部是一个数组,而不是一个对象。试试:

$array['1437688713']->handle;

或者如果您不知道密钥,您可以遍历数组(如果它也可能包含多个对象,则很方便):

foreach ($array as $key => $object) { 
  echo $key; // outputs: 1437688713
  echo $object->handle; // outputs: Keep it logically awesome.
}

【讨论】:

  • 完全理解,但我在这里要做的是在 iobject 中获取一些东西
  • 这看起来比重置对象更干净更好的解决方案。
【解决方案2】:

$object数组中获取第一项

$first_key = key($object);

将它与您的响应数组一起使用,

$object[$first_key]->handle;

或者,数组的第一个元素

$first_pair = reset($object)->handle;

【讨论】:

    猜你喜欢
    • 2013-04-29
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    相关资源
    最近更新 更多