在laravel中拆分数组并插入数据库

时间:2019-01-17 09:40:17

标签: php laravel laravel-5

我有这样的数组

$group=[['abc','cde','01/03/2019','01/05/2019'],['123','456','01/23/2019','01/30/2019']];

我想按以下4个字段插入数据库:

field1     field2      field3        field4
 abc         cde     01/03/2019    01/05/2019
 123         456     01/23/2019    01/30/2019

我尝试以下代码:

for($j=1;$j<count($groups);$j++){
    for ($k=0; $k < count($groups[$j]) ; $k++) { 
        $insert = array(
           'activity' => $groups[$j][$k],
           'person' => $groups[$j][$k],
           'startdate' => $groups[$j][$k],
           'finishdate' => $groups[$j][$k]
        );
    DB::table('test_tbl')->insert($insert);
    }
}

任何解决方案,谢谢您

4 个答案:

答案 0 :(得分:1)

我认为在这种情况下,最简单的方法就是对索引进行硬编码。

像这样:

for($j = 0;  $j  < count($groups); $j++){

  $insert = array(
    'activity' => $groups[$j][0],
    'person' => $groups[$j][1],
    'startdate' => $groups[$j][2],
    'finishdate' => $groups[$j][3]
  );

  DB::table('test_tbl')->insert($insert);

}

在FOR循环中,索引计数器$j通常从0开始。因此,请谨慎操作。

答案 1 :(得分:1)

foreach怎么样?

foreach ($group as $item){
  $insert = array(
           'activity' => $item[0],
           'person' => $item[1],
           'startdate' => $item[2],
           'finishdate' => $item[3]
        );
    DB::table('test_tbl')->insert($insert);
    }
}

答案 2 :(得分:1)

Foreach

我建议您使用ForEach循环:

Composite Types

通过这种方式,您无需计算数组,而且代码也很整洁。

答案 3 :(得分:0)

使用array_map()

array_map(function($item){
   DB::table('table_name')->insert([
      'activity'   => $item[0],
      'person'     => $item[1],
      'startdate'  => $item[2],
      'finishdate' => $item[3]
   ]);
}, $groups);