Построчное чтение из csv файла через League\Csv

150
22 января 2020, 09:30

У меня csv файл со следующим содержимым:

#;newList
name;age;company
...
#;newList
id;name;store;price;qty
...

Суть в том, что после #;newList всегда идет список заголовков (переменное кол-во) и далее идут уже значения.

Нужно в цикле выводить массив такого содержания (param => value), т.е.

array(
    name =>  valie1,
    age => age1,
    company => company1
),
...
array(
    id =>  123,
    name => vasya,
    store => 4,
    price => 123,
    qty => 0
),
...

Нужно реализовать через библиотеку eague/csv. Пробую таким образом:

$csv = League\Csv\Reader::createFromPath('data.csv', 'r');
$csv->setDelimiter(';');
$csv->setHeaderOffset(0);

foreach ($csv as $lineIndex => $record) {
    if($record[0] == "#" && $record[1] == "newList") {
        // Тут нужно указаь объету, что заголовки поменялись, чтобы дальше у массива были правильные ключи
    }
    print_r($record);
}
READ ALSO
Чтение csv фала с кодировкой UTF with BOM через fgetcsv

Чтение csv фала с кодировкой UTF with BOM через fgetcsv

При чтении csv файла с кодировкой UTF with BOM, в начале первой строки какой-то непонятный символВот этот символ: \xef

140
Laravel collection

Laravel collection

У меня есть запрос:

134
Отправка письма с кнопкой submit

Отправка письма с кнопкой submit

Нужно отправить письмо с текстом, по клику на кнопку

159
Неверно вычитает время, на 3 часа больше

Неверно вычитает время, на 3 часа больше

Хочу высчитать время светового дняВсе считает но ,на 3 часа больше

124