我目前正在与Stripe集成,在更新现有订阅之前,我需要检索所有现有订阅以找到正确的订阅ID。
但是,当我使用Stripe PHP库时,我似乎无法迭代实际的订阅集合。
这是我检索订阅集合的方式:
$subscriptions = $customer->subscriptions->all();
我也尝试了这个,它应该是相同的,并且似乎没有在最终结果中产生差异:
$subscriptions = \Stripe\Customer::retrieve( $customer->id )->subscriptions->all();
为了理智,在获得订阅集合后,我echo
一个count()
以查看它包含的元素数量:
echo count( $subscriptions ); // echos '1' which is what I expect.
当我print_r()
整个$subscriptions
对象时,我确实看到了一个现有的订阅,所以我已经确认它已被检索。
然后我想简单地用foreach
迭代集合。这应该是可能的,因为StripeObject
(返回集合的基类)实现了ArrayAccess
:
foreach( $subscriptions as $subscription )
{
print_r( $subscription );
}
但是,这不会产生任何结果。
如何正确迭代Stripe订阅集合?
答案 0 :(得分:10)
Stripe" list" API调用返回"列出对象"或"集合"。这些对象在其data
属性中包含实际列表。
在PHP中,您可以迭代这样的集合:
$subscriptions = $customer->subscriptions->all();
echo count($subscriptions->data); // Number of resources returned
foreach ($subscriptions->data as $subscription) {
// Do something with $subscription
}