Можно ли читать файл CSV столбец за столбцом с лиги CSV? - PullRequest
1 голос
/ 05 июня 2019

Мне было интересно, можно ли было прочитать файл csv, написанный таким образом, в symfony, используя League csv или что-то еще.

      water_level,2,456,345
      wind_speed,25,456,56
      food_level,10.4,123,23
      animal_count,56,34,124
      number_of_machines,150,345,54
      machineId,1234567,1234568,1234567

Заголовок в первом столбце и данные в следующих столбцах.

Прямо сейчас я могу читать файлы, когда заголовок находится в первом ряду, я просто хочу знать, возможно ли прочитать его другим способом!

Я попытался транспонировать, но получил ошибку. Я действительно не знаю, что вызывает это, если массив действительно транспонирован.

    $pathString = implode($newFilesPath);
    $reader = (Reader::createFromPath($pathString))->setHeaderOffset(0);
    $results = $this->transpose(iterator_to_array($reader->getRecords()));

    foreach ($results as $row) {

        $properties = (new AppProperty)
            ->setWaterLevel($row['water_level'])
            ->setWindSpeed($row['wind_speed'])
            ->setFoodLevel($row['food_level'])
            ->setAnimalCount($row['animal_count'])
            ->setNumberOfMachines($row['number_of_machines'])
            ->setMachineId($row['machineId'])
            ->setDate(new \DateTime());

            $this->em->persist($properties);
    }

    $this->em->flush();
 }

private function transpose ($array){
    return array_map(null, $array);
}

Ошибка:

Аргумент 1, передаваемый в App \ Entity \ Property :: setWaterLevel (), должен иметь тип int или null, заданная строка.
Похоже, что транспонирование просто не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...