Я видел подобные вопросы здесь, но я не могу применить решения к моей проблеме. У меня есть переменная, называемая $ 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, но, похоже, это не понять. Как я могу написать его так, чтобы получить «[подробности]»?
foreach ($results->out->transactions->RealTimeCommissionDataV2 AS $commissionData) { // you can access the commissionData objects now, ie: $commissionData->adId; $commissionData->details; }
<? foreach ($result->out->transactions->RealTimeCommissionDataV2 as $item) { // do somthing with each item. print_r($item); // or the details array $num_details = sizeof($item->details) }
Я думаю, это то, что вы хотите.
РЕДАКТИРОВАТЬ
Обновлено на основе некоторых примечаний в документации . В частности, эти два
массив с числовой индексацией не даст результатов, если вы не используете EXTR_PREFIX_ALL или EXTR_PREFIX_INVALID.
Префиксы автоматически отделяются от ключа массива символом подчеркивания.
echo extract( $results->out->transactions->RealTimeCommissionDataV2, EXTR_PREFIX_ALL, 'websiteId' ); // test the extract print_r( $websiteId_0 );