我有一个csv,我想插入到数据库表中,我已经删除了标题,因此当我使用foreach获取行值时,它可以组合为参考。数据确实插入到数据库表中,但是在array_combined中抛出了一个错误both parameters should have an equal number of elements
。我检查了单行上的头数组和dd(),元素号是相同的。但是在我完成这个帖子后,错误仍然显示出来。
$rows = array_map('str_getcsv', explode("\n",$csvData) );
$header = array_shift($rows);
foreach($rows as $row )
{
$row = array_combine($header, $row);
People::create([
'name' => $row['Name'],
'surname' => $row['Surname'],
'age' => $row['Age'],
'sex' => $row['Sex'],
'note' => $row['Note'],
'list_id' => $list_num
]);
}
答案 0 :(得分:1)
我认为问题可能是最后一行。
您可以验证替换的确切问题:
$row = array_combine($header, $row);
使用:
if (count($header) != count($row)) {
dd($header, $row);
}
在您跟踪问题后的情况下,您可以在这种情况下简单地跳过行,例如:
if (count($header) != count($row)) {
continue;
}