Я возлюсь с CSV-файлами внутри консольной команды для laravel. Я знаю, что есть библиотеки для импорта CSV-файлов, однако я столкнулся со странной неопределенной ошибкой индекса, которая, я надеюсь, может иметь больше информации. Без этой колонки я могу достичь того, что мне нужно, но мне любопытно, почему эта ошибка происходит.
public function handle()
{
$file = Storage::disk('local')->get('upload.csv');
$lines = explode("\r\n", $file);
$keys = [];
foreach ($lines as $key => $line)
{
$outputLine = [];
if($key == 0)
{
// Get header columns
$keys = str_getcsv($line); continue;
}
// Get row contents
$items = str_getcsv($line);
foreach ($items as $k => $item)
{
// Rename keys to match headers
$outputLine[$keys[$k]] = $item;
}
// try to access $outputLine['id']
// error: Undefined Index: id
$csv[$key] = $outputLine;
}
}
Однако вывод $csv[$key]
ясно показывает ключ ['id'] для всех записей в csv. Попытка доступа здесь также вызывает ту же проблему. Доступ к любому другому произвольному ключу в массиве работает нормально. Это всегда первый ключ, независимо от имени.
ОБНОВЛЕНИЕ: Предоставление примера импорта CSV
id,name,email,membership_id
1,John,John@example.com,1
2,Jane,Jane@example.com,2
3,Brian,Brian@example.com,3
ОБНОВЛЕНИЕ 2: Предоставление дампа из $ items
array:4 [
0 => "1"
1 => "John"
2 => "john@example.com"
3 => "1"
]
array:4 [
0 => "2"
1 => "Jane"
2 => "jane@example.com"
3 => "2"
]
array:4 [
0 => "3"
1 => "Brian"
2 => "brian@example.com"
3 => "3"
]
array:4 [
0 => "4"
1 => "Adam"
2 => "adam@example.com"
3 => "4"
]
array:4 [
0 => "5"
1 => "Frank"
2 => "frank@example.com"
3 => "5"
]
array:4 [
0 => "6"
1 => "Phil"
2 => "phil@example.com"
3 => "6"
]
DUMP OF $outputLine
array:4 [
"id" => "1"
"name" => "John"
"email" => "john@example.com"
"membership_id" => "1"
]
array:4 [
"id" => "2"
"name" => "Jane"
"email" => "jane@example.com"
"membership_id" => "2"
]
array:4 [
"id" => "3"
"name" => "Brian"
"email" => "brian@example.com"
"membership_id" => "3"
]
array:4 [
"id" => "4"
"name" => "Adam"
"email" => "adam@example.com"
"membership_id" => "4"
]
array:4 [
"id" => "5"
"name" => "Frank"
"email" => "frank@example.com"
"membership_id" => "5"
]
array:4 [
"id" => "6"
"name" => "Phil"
"email" => "phil@example.com"
"membership_id" => "6"
]