在函数调用中循环访问关联数组



我正在尝试创建一个 Stripe 订阅时间表,每个时间表限制为 10 个。我使用chunk将数组拆分为不同的部分。有一个名为createSchedule的函数来创建计划。但是,当它完成时,尽管它创建了两个订阅,但它不包括我的所有数组项,只包括第一个。

注意:为简单起见,我截断了数组。在实际代码中,数组中有更多的>20 个项目。

function createSchedule ($customer, $phases) {
$schedule = StripeSubscriptionSchedule::create([
'customer' => $customer,
'expand' => ['subscription'],
'start_date' => 'now',
'end_behavior' => 'cancel',
'phases' => $phases,
]);
}
$dataset = array(
array(
"product" => $product->id,
"unit_amount" => "2020",
"end_date" =>  date_timestamp_get(date_create("2020-07-12")) // Payment 1 Date
),
array(
"product" => $product->id,
"unit_amount" => "2000",
"end_date" =>  date_timestamp_get(date_create("2020-07-15")) //Payment 2 Date
),
array(
"product" => $product->id,
"unit_amount" => "3400",
"end_date" =>  date_timestamp_get(date_create("2020-07-16")) //Payment 3 Date
),
array(
"product" => $product->id,
"unit_amount" => "3700",
"end_date" =>  date_timestamp_get(date_create("2020-07-18")) //Payment 4 Date
),
);
$schedule_batch = array_chunk($dataset, 9);
$numberofbatches = count($schedule_batch);
$phases = [];
foreach ($schedule_batch as $index => $data) {
$phases[] = [
'end_date' => $data[$index]["end_date"],
'transfer_data' => [
'amount_percent' => $fee_percentage,
'destination' => $account],        
'proration_behavior' => 'none',
'plans' => [
[
'price_data' => [
'unit_amount' => $data[$index]["unit_amount"],
'currency' => 'usd',
'product' => $data[$index]["product"],
'recurring' => [
'interval' => 'month',
],
],

],
],
];
}

foreach ($schedule_batch as $index => $data) {
createSchedule($customer->id, $phases);
}

foreach 语句需要另一个级别来访问数组元素。此外,$phases = []的数组初始化需要在两个 foreach 语句之间进行。

foreach ($schedule_batch as $index => $data) {
$phases = [];
foreach ($data as $index2 => $data2)
$phases[] = [
'end_date' => $data2["end_date"],
'transfer_data' => [
'amount_percent' => $fee_percentage,
'destination' => $account],        
'proration_behavior' => 'none',
'plans' => [
[
'price_data' => [
'unit_amount' => $data2["unit_amount"],
'currency' => 'usd',
'product' => $data2["product"],
'recurring' => [
'interval' => 'month',
],
],

],
],
];
}

最新更新