数组为空,不显示任何内容

时间:2018-03-21 02:09:17

标签: php laravel laravel-5 laravel-5.5 maatwebsite-excel

我试过dd($ inserts),但它显示“[]”。这是我控制器中的代码。

public function importExcel()
{
    $path = Input::file('import_file')->getRealPath();
    $inserts = [];
    Excel::load($path, function($reader) use ($inserts) {
        foreach ($reader->toArray() as $rows) { // <-- $rows pertains to array of rows
            foreach($rows as $row) { // <-- $row pertains to the row itself
                $inserts[] = ['title' => $row['title'], 'description' => $row['description']];
            }
        }    
    });
    dd($inserts);
    return back();
}

1 个答案:

答案 0 :(得分:1)

由于您似乎有“行”而不是“行”,因此您需要再次遍历这些行。

Excel::load($path, function($reader) use ($inserts) {
    foreach ($reader->toArray() as $rows) { // <-- $rows pertains to array of rows
        foreach($rows as $row) { // <-- $row pertains to the row itself
            $inserts[] = ['title' => $row['title'], 'description' => $row['description']];
        }
    }    
});

其实你可以这样做。

$rows = $reader->toArray();

foreach($rows as $row) { // <-- $row pertains to the row itself
    $inserts[] = ['title' => $row['title'], 'description' => $row['description']];
}

或者,如果你想坚持使用get,我认为它会返回一个集合。

$rows = $reader->get();

foreach($rows as $row) {
    $inserts[] = ['title' => $row->title, 'description' => $row->description];
}

<强>更新

要反映$inserts数组的修改,您需要传递其引用。

function($reader) use (&$inserts) {
//                     ^-- add this to pass its reference.