2009-11-16 8 views
2

Я видел похожие вопросы здесь, но я не могу применить решения для своей проблемы. У меня есть переменная, называемая $ results, полученная из API. Я менять собственные имена, чтобы защитить клиент моей работы в:foreach loops & stdclass objects

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
foreach ($results->out->transactions->RealTimeCommissionDataV2 AS $commissionData) { 
    // you can access the commissionData objects now, i.e.: 
    $commissionData->adId; 
    $commissionData->details; 
} 
+0

спасибо вам также! –

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

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

EDIT

Обновлено на основе некоторых нот в 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); 
+0

большое спасибо! –

+0

Это ничего не печатает, если я изменю его на «$ websiteId», он повторяет одно правильное значение, но проблема в том, что может быть до десятка. Я хочу иметь $ websiteID1 $ websiteID2 $ websiteID3 и т. Д. –

+0

Хорошо, я изучил проблему и обновил свой ответ. –