PHP数组未遍历块的第一部分
我有一个名为PHP数组未遍历块的第一部分,php,arrays,laravel,multidimensional-array,stripe-payments,Php,Arrays,Laravel,Multidimensional Array,Stripe Payments,我有一个名为$dataset的PHP数组,它被分为两个块。我正在尝试基于每个区块创建两个条带订阅计划 下面的代码创建了两个计划,但仅用于创建两次的区块schedule\u batch[1]的第二部分。第一个区块中的前9个项目根本没有创建 第一个区块被完全忽略,第二个区块被处理两次 我已经删除了我的数组的全部内容,以保持下面的代码示例的简单性,但它的格式如下,数组中有20项 $dataset = array( array( "product"
$dataset
的PHP数组,它被分为两个块。我正在尝试基于每个区块创建两个条带订阅计划
下面的代码创建了两个计划,但仅用于创建两次的区块schedule\u batch[1]
的第二部分。第一个区块中的前9个项目根本没有创建
第一个区块被完全忽略,第二个区块被处理两次
我已经删除了我的数组的全部内容,以保持下面的代码示例的简单性,但它的格式如下,数组中有20项
$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',
],
],
],
],
];
}
function createSchedule ($customer, $phases) {
$schedule = \Stripe\SubscriptionSchedule::create([
'customer' => $customer,
'expand' => ['subscription'],
'start_date' => date_timestamp_get(date_create("2020-07-10")),
'end_behavior' => 'cancel',
'phases' => $phases,
]);
}
foreach ($schedule_batch as $index => $data) {
createSchedule($customer->id, $phases);
}
将生成
$phases
的代码应用于$dataset
,然后将其分块到$schedule\u batch
:
$phases = [];
foreach ($dataset as $data) {
$phases[] = [
'end_date' => $data["end_date"],
'transfer_data' => [
'amount_percent' => 20,
'destination' => 10],
'proration_behavior' => 'none',
'plans' => [
[
'price_data' => [
'unit_amount' => $data["unit_amount"],
'currency' => 'usd',
'product' => $data["product"],
'recurring' => [
'interval' => 'month',
],
],
],
],
];
}
$schedule_batch = array_chunk($phases, 2);
$numberofbatches = count($schedule_batch);
调用createSchedule
的最后一个代码是:
foreach ($schedule_batch as $phase) {
createSchedule($customer->id, $phase);
}
不清楚你想做什么。
$phases
中应该是什么?$phases只是在条带上创建价格,然后为下一次迭代更改价格。我刚刚意识到我没有向代码中添加函数调用。似乎在$dataset
上运行$phases
代码,然后在$phases
上运行$phases
可能会更简单一些。只需更改即可foreach($index=>schedule\u batch作为$index=>data){
到foreach($data作为$data)
,$data[$index]
到$data
循环内,然后在循环后添加$schedule\u batch=array\u chunk($phases,9);