Php 为什么我没有列出foreach中的所有行时会得到未定义的偏移量?

Php 为什么我没有列出foreach中的所有行时会得到未定义的偏移量?,php,excel,laravel,query-builder,Php,Excel,Laravel,Query Builder,我在尝试使用query builder将一些excel数据导入数据库时遇到一个问题,我得到了未定义的偏移量:4,即使我拥有的数据列超过4。数据:。关于foreach有什么我应该知道的吗 public function collection(Collection $rows) { $no = 1; foreach ($rows as $row) { DB::table('data_train')->insert([ 'no_pendaf

我在尝试使用query builder将一些excel数据导入数据库时遇到一个问题,我得到了未定义的偏移量:4,即使我拥有的数据列超过4。数据:。关于foreach有什么我应该知道的吗

public function collection(Collection $rows)
{
    $no = 1;
    foreach ($rows as $row) {
        DB::table('data_train')->insert([
            'no_pendaftaran' => $no,
            'nama' => $row[1],
            'jalur' => $row[4],
            'tahun' => $row[5],
            'daftar_kembali' => $row[10],
        ]);
        $no++;
        var_dump($row);
    }
}

var_dump($row)输出:

因为您不知道每个迭代的输出,所以应该首先检查您尝试插入的变量是否实际有任何数据。尝试以下方法:

'jalur' => (! empty($row[4])) ? $row[4] : null,
相同的主体适用于所有插入字段


确保您的db字段接受
null
,否则将
null
替换为
'

,因为您不知道每次迭代的输出,您应该首先检查您尝试插入的变量是否真的有任何数据。尝试以下方法:

'jalur' => (! empty($row[4])) ? $row[4] : null,
相同的主体适用于所有插入字段


确保您的数据库字段接受可为空的
null
,否则将
null
替换为
'

'jalur'=>$row[4]??空

或者将其用于不可为空的字段


'jalur'=>$row[4]??“

'jalur'=>$row[4]??空

或者将其用于不可为空的字段


'jalur'=>$row[4]??“

$row
的内容是什么样子的?@Alex我用var\u dump output编辑了这篇文章,请将这些信息以文本形式直接包含在你的问题中-格式正确,如果数据太多,请简化为一个合理的例子。不要在我们必须先下载的外部网站上转储类似的内容。
$row
的内容是什么样子的?@Alex我用var_dump output编辑了这篇文章。请以文本形式将这些信息直接包含在您的问题中-格式正确,并简化为一个合理的示例,如果通常有太多数据。不要把这样的东西扔到外部网站上,我们必须先下载。谢谢,但当我添加每一行时,我都出乎意料。@kheengz的答案确实有效,你必须在每一行后面加一个逗号:)这毕竟是一个数组字段,编辑了我的答案谢谢,但当我添加每一行时,我出乎意料。@kheengz的答案确实有效,你必须在每个答案后面加一个逗号:)这毕竟是一个数组字段,编辑了我的答案