PHP对象映射意外

时间:2018-12-23 23:36:37

标签: php

我正在使用ebay API,试图获取一些交易历史记录数据。 当我向API发送请求时,它将返回以下内容:

print_r($soldlist);
///
SimpleXMLElement Object
(
    [OrderTransaction] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [Transaction] => SimpleXMLElement Object
                        (
                            [Buyer] => SimpleXMLElement Object
                                (
                                  ...
            [1] => SimpleXMLElement Object
                (
                    [Transaction] => SimpleXMLElement Object
                        (
                            [Buyer] => SimpleXMLElement Object
                                (
                                  ...
.....

所以我只对OrderTransaction感兴趣,所以我可以将它放在array_map函数中,如下所示:

array_map(function($order){....}, $soldlist->OrderTransaction);

购买php时会出现警告:

  

消息:array_map():参数2应该是数组

所以我做了print_r($soldlist->OrderTransaction)并很想返回一个数组,它返回了它的第一个元素:

SimpleXMLElement Object
(
    [Transaction] => SimpleXMLElement Object
        (
            [Buyer] => SimpleXMLElement Object
                (....

我如何返回一个数组以用于map?

编辑: 有趣的是,如果我进行直接迭代,它的工作原理如下:

foreach($soldlist->OrderTransaction as $order){...}

1 个答案:

答案 0 :(得分:3)

array_map明确要求将数组作为第二个参数... xml元素不是数组而是具有traversable interface的对象。

这意味着您可以在这些元素上使用foreach,但不能在array_map上使用。

请注意,您可以按照注释中的建议将元素转换为数组。但是,在投射时您可能会丢失一些对象信息。因此,Foreach是更好的答案。