如何修复奇怪的“未定义偏移”? (laravel)

问题描述

我在下面有这些代码,它总是返回未定义偏移错误

我使用 dd 获取数据值,它在索引 1 中具有值。

array:3 [▼
  0 => "Title 1"
  1 => "Content1"
  2 => "Subcontent1"
]

但是当我运行错误返回:

未定义的偏移量:1

我的代码

class BlogsImport implements ToModel
{
    use Importable;

    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        // dd($row);
        return new Blogs([
            'title' => $row[0],'content' => $row[1],]);
    }
}

解决方法

以这种方式更改您的代码

class BlogsImport implements ToModel
{
    use Importable;

    /**
     * @param array $row
     *
     * @return \Illuminate\Database\Eloquent\Model|null
     */
    public function model(array $row)
    {
        return new Blogs([
            'title' => $row[0] ?? '',// or $row[0] ?? 'default_value' 
            'content' => $row[1] ?? '',// or $row[1] ?? 'default_value'
        ]);
    }
}
,

我通过使用 dump 而不是 dd 来解决这个问题。结果发现有一些空单元格。

感谢@JustCarty 的提示。

public function model(array $row)
{
    if ($row[0]) {
        return new News([
            'title' => $row[0],'content' => $row[1],]);
    }
}