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);