Этот код почему-то удаляет все данные из файла и записывает новые при каждом вызове saveRow().
$list - одномерный массив...
function saveRow($list) {
$base = 'base.csv';
if (is_writable($base)) {
if (!$handle = fopen($base, 'a')) {
$list = array_map("utf8_decode", $list);
fputcsv($handle, $list);
fclose($handle);
}
}
}
Как дописывать строки в csv файл?
Нужно вынести fopen
и fclose
за пределы цикла, вызывающего эту функцию.
UPDATE
Согласно документации, "Указатель на файл должен быть корректным и указывать на файл, успешно открытый функциями fopen() или fsockopen() (и все еще не закрытым функцией fclose())."
По всей видимости, ваш код выглядит примерно так:
function saveRow($list) {
$base = 'base.csv';
if (is_writable($base)) {
if (!$handle = fopen($base, 'a')) {
$list = array_map("utf8_decode", $list);
fputcsv($handle, $list);
fclose($handle);
}
}
}
funcion xxx() {
foreach () {
//...
saveRow($list);
// ...
}
Надо сделать так
function saveRow($list, $handle) {
$list = array_map("utf8_decode", $list);
fputcsv($handle, $list);
}
funcion xxx() {
$base = 'base.csv';
if (is_writable($base)) {
if (!$handle = fopen($base, 'a')) {
foreach () {
//...
saveRow($list, $handle);
// ...
}
fclose($handle);
}
}
Обратите внимание на изменения в функции saveRow.
Вот рабочий код, надо ему посылать массив
function saveRow($list) {
$file = fopen("base.csv","a");
foreach ($list as $line)
{
fputcsv($file,explode(',',$line));
}
fclose($file);
}
saveRow(Array("test,test"));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Можно ли через API по номеру человека узнать, в онлайне он сейчас или нет?
пожалуйста помогите как ответить клиенту на его запрос в формате xml без echo чтобы он получал ответ и читал через SimpleXMLElement