Я хочу прочитать файл данных CSV, загрузить его в массив, отредактировать его и записать в файл. Я смог выполнить эту единственную итерацию с примерами здесь, на Stackoverflow! Благодарю.PHP писать в файл без последней новой строки
Проблема в том, когда я записываю новые данные обратно в файл, оба метода, которые я пытался записать отредактированный массив в файл, добавили в конец файла новую строку. Это создает проблему при загрузке данных файла CSV во второй раз. Второе чтение вызывает пустой указатель в массиве, который вызывает ошибку при записи файла.
Пример # 1:
foreach($editArray as $row) {
$writeStuff = implode(",", $row);
fwrite($file_handle, $writeStuff);
fwrite($file_handle, "\n");
}
Пример № 2:
foreach ($editArray as $row) {
fputcsv($file_handle, $row);
}
Это оригинальный CSV данные:
1/1/16,Yes,No 1/2/16,No,Yes
При записи с использованием выше него производит эти данные с добавленная строка новой строки:
1/1/16,Yes,No 1/2/16,No,Yes
Эта дополнительная новая строка создает проблему при чтении файла во второй раз. Я получаю сообщение об ошибке как на fputcsv()
, так и на implode()
. Я считаю, что это потому, что пустой индекс вызван новой строкой, когда я читаю файл во второй раз после первой записи.
Я мог бы использовать цикл for с условным номером в последнем fwrite()
в примере implode()
Пример №1, но это казалось бы неуклюжим и не способ сделать это.
Возможно, существует совершенно другой способ справиться с этим?
Как вы прочитали этот файл? – AbraCadaver
Я не вижу никакого способа добавить дополнительную строку новой строки, если последний элемент '$ editArray' не заканчивается новой строкой, а другие элементы - нет. – Barmar
В первом примере вы явно пишете новую строку в последнем утверждении. Это причина, по которой вы получаете дополнительную новую строку в конце? – Svea