【问题标题】:PHP: How to parse a stdClass Object? [closed]PHP:如何解析 stdClass 对象? [关闭]
【发布时间】:2013-04-29 02:40:09
【问题描述】:

我正在尝试解析从SmartyStreets(它是地址验证公司)返回的数据。

这是一个例子:

Array
(
    [0] => stdClass Object
        (
            [input_index] => 0
            [candidate_index] => 0
            [delivery_line_1] => 3785 Las Vegas Blvd S
            [last_line] => Las Vegas NV 89109-4333
            [delivery_point_barcode] => 891094333992
            [components] => stdClass Object
                (
                    [primary_number] => 3785
                    [street_name] => Las Vegas
                    [street_postdirection] => S
                    [street_suffix] => Blvd
                    [city_name] => Las Vegas
                    [state_abbreviation] => NV
                    [zipcode] => 89109
                    [plus4_code] => 4333
                    [delivery_point] => 99
                    [delivery_point_check_digit] => 2
                )

            [metadata] => stdClass Object
                (
                    [record_type] => H
                    [county_fips] => 32003
                    [county_name] => Clark
                    [carrier_route] => C024
                    [congressional_district] => 01
                    [building_default_indicator] => Y
                    [rdi] => Commercial
                    [latitude] => 36.10357
                    [longitude] => -115.17295
                    [precision] => Zip9
                )

            [analysis] => stdClass Object
                (
                    [dpv_match_code] => D
                    [dpv_footnotes] => AAN1
                    [dpv_cmra] => N
                    [dpv_vacant] => N
                    [active] => Y
                    [footnotes] => B#H#L#M#
                )

        )

)

我是使用 Objects 的新手,所以我很难理解它是如何工作的。从上面的 print_r $result 输出中,我尝试访问 [delivery_line1]、[city_name]、[state_abbreviation]、[zipcode] 和 [plus4_code]。

如何在 PHP 中访问这棵树?

我试过了:

echo $result["delivery_line_1"];

但这给出了“未定义的索引:delivery_line_1”。

echo $result->delivery_line_1;

但这给出了“试图获取非对象的属性”。

我错过了什么?谢谢!

【问题讨论】:

  • 好的,这是您要解析字符串,还是您要从中array '正在尝试提取属性?
  • 这不是“解析”。这称为“遍历”或简单地访问变量。
  • 如果你不喜欢弄乱对象,你总是可以调用 json_decode(json_encode($arr),TRUE) 并拥有一个不错的 assoc 数组,但需要额外调用 2 次。

标签: php stdclass smartystreets


【解决方案1】:
$result[0]->delivery_line_1;

$result 是一个包含对象的数组。

【讨论】:

  • 谢谢!请告诉我,什么是[0]?它是整个对象还是该对象的一部分?例如,如果在此查询中返回更多数据,是否会有 [1] stdClass 对象?
  • 您有一个带有编号索引的数组,例如 0、1、2.. 等,每个数组值都是一个对象,所以首先您使用 [0] 键(或任何键是),然后你就有了对象,你可以在其中使用箭头访问某个属性。
猜你喜欢
  • 2019-04-21
  • 1970-01-01
  • 2012-08-03
  • 2013-10-23
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 2019-06-01
相关资源
最近更新 更多