【问题标题】:Get a PHP object property that is a number [duplicate]获取一个数字的PHP对象属性[重复]
【发布时间】:2012-03-25 06:25:42
【问题描述】:

我正在尝试从解码为 PHP 对象的 JSON 数据中获取属性。它只是一个 YouTube 数据 API 请求,它返回一个视频对象,该对象具有类似的内容对象;

[content] => stdClass Object
                (
                    [5] => https://www.youtube.com/v/r4ihwfQipfo?version=3&f=videos&app=youtube_gdata
                    [1] => rtsp://v4.cache7.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp
                    [6] => rtsp://v6.cache3.c.youtube.com/CiILENy73wIaGQn6pSL0waGIrxMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp
                )

在做

$object->content->5

抛出“unexpected T_DNUMBER”——这很有意义。但是如何获取数字属性的值?

我确定我应该知道这一点。提前致谢。

【问题讨论】:

标签: php json object properties


【解决方案1】:

这应该可行:

$object->content->{'5'}

【讨论】:

  • 没用。抓到Undefined property: stdClass::$5。使用 PHP 5.5.7 版
  • 如果变量是已被强制转换为对象的数组,则此工作流不起作用。详细的解释和例子可以在这里找到:stackoverflow.com/a/10333200/58795
【解决方案2】:

另一种可能是使用 json_decode 的第二个参数:

$obj = json_decode(str, true);

你得到一个数组而不是 PHP 对象,然后你可以像往常一样索引它:

$obj['content'][5]

【讨论】:

    【解决方案3】:

    JSON 编码,然后解码您的对象,将 true 作为解码函数中的第二个参数传递。这将返回一个关联数组。

    $array = json_decode(json_encode($object), true);
    

    现在你可以使用你的新数组了

    echo $array['content']['5'];
    

    如果对象是通过将数组转换为对象来创建的,则使用$object->content->{'5'}不起作用

    更详细的描述可以在这里找到:https://stackoverflow.com/a/10333200/58795

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 1970-01-01
      • 2015-07-05
      • 2015-06-28
      • 2017-05-21
      • 2013-06-25
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      相关资源
      最近更新 更多