首页 > 解决方案 > 如何将多个数组元素添加到转置结构中?

问题描述

我有这些数组

$months = ['jan', 'feb'];

$cashUniform = [2000, 1200];

$cashFee = [24000, 34000];

$cashExpenses = [4000, 300];

我试图从这些数组中创建一个对象,如下所示:

$data = [{
 'month': 'jan',
 'cashUniform': 2000,
 'cashFee': 24000,
 'cashExpenses': 4000,
},
{
 'month': 'feb',
 'cashUniform': 12000,
 'cashFee': 34000,
 'cashExpenses': 300,
 }
];
    

我试过 array_combine 但它只接受两个数组元素,就我而言,我有四个数组元素。

我也尝试过创建一个多重数组。

  $data['months'] = $months;
  $data['cashFee'] = $cashFee;
  $data['cashUniform'] = $cashUniform;
  $data['cashExpenses'] = $cashExpenses;
  dd(json_encode($data));

上面的代码返回

{"months":["JAN","FEB"],"cashFee":   [12500,2000],"cashUniform":[2000,0],"cashExpenses":[1500,0]}

标签: phparrayslaravelmultidimensional-arraytranspose

解决方案


您可以使用简单的 for 循环遍历所有数组并将值添加到单个数组中:

$data = [];
for ($i = 0; $i < count($months); $i++) {
    $data[] = [
        'month' => $monts[$i],
        'cashUniform' => $cashUniform[$i],
        'cashFee' => $cashFee[$i],
        'cashExpenses' => $cashExpenses[$i],
    ];
}

dd($data);

这确实要求所有数组具有相同数量的值!


推荐阅读