У меня есть файл CSV, который я конвертирую в массив, используя этот
public function getCsvAsArray($filePath, $keyField = null)
{
$rows = array_map('str_getcsv', file($filePath));
$header = array_shift($rows);
$formattedData = [];
foreach($rows as $row) {
$formattedData[] = array_combine($header, $row);
}
return $formattedData;
}
Затем я выполняю некоторую обработку этого массива, и к концу мои данные принимают следующую структуру
0 => array:3 [
"ID" => "10338"
"Date" => "19/08/2011"
"Value" => "30"
]
Таким образом, он содержит имя заголовка в качестве ключа, а затем значение.
Сейчас я пытаюсь преобразовать это обратно в файл CSV. На данный момент я пытаюсь
$fp = fopen($this->storagePath, "a+");
foreach ($this->csvData as $line) {
fputcsv($fp, $line);
}
fclose($fp);
Но это ничего не делает с исходным файлом CSV, и я, похоже, не получаю никаких ошибок. Я делаю что-то неправильно?
Спасибо
Да, они такие же.
Вы хотите заменить файл или добавить в него этот новый материал?
Можете ли вы проверить, что $this->csvData не пустой массив?
Да, мне нужно заменить файл. И csvData не пустой
Вы уверены, что это не просто добавление в конец исходного файла, вы проверяли весь путь до конца файла?
Если вы хотите сделать файл заменять, вы должны использовать флаг w+. прочитать документация
Кроме того, зависит от сервера, php иногда не выводит ошибки на экран, вам следует проверить файл журнала сервера, возможно, файл недоступен для записи или у вас нет разрешения на запись в этот файл.






$filepath, совпадает с$this->storagePath???