Laravel 5.5:array_combine():两个参数都应该有相同数量的元素

时间:2017-11-09 18:26:55

标签: php mysql laravel laravel-5 laravel-5.5

我有一个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
                ]);
        }

1 个答案:

答案 0 :(得分:1)

我认为问题可能是最后一行。

您可以验证替换的确切问题:

$row = array_combine($header, $row);

使用:

if (count($header) != count($row)) {
  dd($header, $row);
}

在您跟踪问题后的情况下,您可以在这种情况下简单地跳过行,例如:

if (count($header) != count($row)) {
  continue;
}