为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 数组不迭代块的第一部分

PHP 数组不迭代块的第一部分

PHP
翻阅古今 2023-07-01 16:41:31
我有一个名为的 PHP 数组$dataset,它已被分成两个块。我正在尝试根据每个块创建两个 Stripe 订阅计划。schedule_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',                  ],                ],                              ],            ],        ];      }   
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

$phases将生成的代码应用到$dataset然后将其分块到 中会更容易$schedule_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);

3v4l.org 上的演示

您最终调用的代码createSchedule将是:

foreach ($schedule_batch as $phase) { 
   createSchedule($customer->id, $phase);
}


查看完整回答
反对 回复 2023-07-01
  • 1 回答
  • 0 关注
  • 80 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信