foreach循环& stdclass对象

时间:2009-11-16 18:56:19

标签: php std foreach

我在这里看到过类似的问题,但我似乎无法将解决方案应用于我的问题。我有一个名为$ results的变量,它来自API。我会更改专有名词,以保护我的工作客户:

stdClass Object
(
    [out] => stdClass Object
        (
            [count] => 2
            [transactions] => stdClass Object
                (
                    [RealTimeCommissionDataV2] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [adId] => 12345678
                                    [advertiserId] => 123456789
                                    [advertiserName] => Chuck E. Cheese, inc.
                                    [commissionAmount] => 50
                                    [country] => US
                                    [details] => stdClass Object
                                        (
                                        )

                                    [eventDate] => 2009-11-16T09:44:25-08:00
                                    [orderId] => X-XXXXXXXXXX
                                    [saleAmount] => 0
                                    [sid] => 123456789
                                    [websiteId] => 2211944
                                )

                            [1] => stdClass Object
                                (
                                    [adId] => 987654321
                                    [advertiserId] => 12345
                                    [advertiserName] => Chorizon Wireless.
                                    [commissionAmount] => 50
                                    [country] => US
                                    [details] => stdClass Object
                                        (
                                        )

                                    [eventDate] => 2009-11-16T09:58:40-08:00
                                    [orderId] => X-CXXXXXX
                                    [saleAmount] => 0
                                    [sid] => 61-122112
                                    [websiteId] => 1111922
                                )
                        )
                )
        )
)

我将它缩短为两个条目,但条目数量会有所不同,这是过去一小时内交易检查的结果,有时可能只有一个,有时甚至多达十几个。

我想将这些条目分配给变量,例如websiteId1 websiteId2等。我知道我需要做一个foreach循环,但似乎无法搞清楚。如何编写它以便我得到“[详细信息]”?

3 个答案:

答案 0 :(得分:3)

foreach ($results->out->transactions->RealTimeCommissionDataV2 AS $commissionData) {
    // you can access the commissionData objects now, i.e.:
    $commissionData->adId;
    $commissionData->details;
}

答案 1 :(得分:3)

<?
    foreach ($result->out->transactions->RealTimeCommissionDataV2 as $item)
    {
            // do somthing with each item.
            print_r($item);

            // or the details array
            $num_details  = sizeof($item->details)
    }

答案 2 :(得分:2)

我认为这就是你想要的。

修改

根据the documentation中的一些注释进行了更新。具体来说,这两个

  

数字索引数组不会   除非你使用,否则产生结果   EXTR_PREFIX_ALL或   EXTR_PREFIX_INVALID。

     

前缀会自动分开   来自数组键的下划线   字符。

echo extract( $results->out->transactions->RealTimeCommissionDataV2, EXTR_PREFIX_ALL, 'websiteId' );

// test the extract
print_r( $websiteId_0 );