циклы foreach и объекты stdclass - PullRequest
       39

циклы foreach и объекты stdclass

2 голосов
/ 16 ноября 2009

Я видел подобные вопросы здесь, но я не могу применить решения для моей проблемы. У меня есть переменная с именем $ 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 ]

3 голосов
/ 16 ноября 2009
<?
    foreach ($result->out->transactions->RealTimeCommissionDataV2 as $item)
    {
            // do somthing with each item.
            print_r($item);

            // or the details array
            $num_details  = sizeof($item->details)
    }
3 голосов
/ 16 ноября 2009
foreach ($results->out->transactions->RealTimeCommissionDataV2 AS $commissionData) {
    // you can access the commissionData objects now, i.e.:
    $commissionData->adId;
    $commissionData->details;
}
2 голосов
/ 16 ноября 2009

Я думаю, это то, что вы хотите.

EDIT

Обновлено на основе некоторых заметок в документации . В частности, эти два

численно индексированный массив не будет производить результаты, если вы не используете EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID.

Префиксы автоматически разделяются из ключа массива подчеркиванием характер.

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

// test the extract
print_r( $websiteId_0 );
...