Laravel 5.5 : array_combine(): 两个参数应该有相同数量的元素
Laravel 5.5 : array_combine(): Both parameters should have an equal number of elements
我有一个要插入到数据库中的 csv table,我删除了 headers 以便在我使用 foreach 获取行值时可以将其合并为参考.数据确实插入到数据库 table 中,但在 array_combined 中抛出了一个错误 both parameters should have an equal number of elements
。我检查了单行上的 header 数组和 dd(),元素编号相同。但是在我完成 post.
之后错误仍然存在
$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
]);
}
我认为问题可能出在最后一行。
您可以验证替换的确切问题是什么:
$row = array_combine($header, $row);
与:
if (count($header) != count($row)) {
dd($header, $row);
}
在您的情况下,在跟踪问题后您可以简单地跳过该行,例如:
if (count($header) != count($row)) {
continue;
}
我有一个要插入到数据库中的 csv table,我删除了 headers 以便在我使用 foreach 获取行值时可以将其合并为参考.数据确实插入到数据库 table 中,但在 array_combined 中抛出了一个错误 both parameters should have an equal number of elements
。我检查了单行上的 header 数组和 dd(),元素编号相同。但是在我完成 post.
$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
]);
}
我认为问题可能出在最后一行。
您可以验证替换的确切问题是什么:
$row = array_combine($header, $row);
与:
if (count($header) != count($row)) {
dd($header, $row);
}
在您的情况下,在跟踪问题后您可以简单地跳过该行,例如:
if (count($header) != count($row)) {
continue;
}