【问题标题】:Laravel 5.5 : array_combine(): Both parameters should have an equal number of elementsLaravel 5.5:array_combine():两个参数应该有相同数量的元素
【发布时间】:2017-11-09 18:26:54
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    与:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多