我在这里看到过类似的问题,但我似乎无法将解决方案应用于我的问题。我有一个名为$ 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循环,但似乎无法搞清楚。如何编写它以便我得到“[详细信息]”?
答案 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 );