Как добавить входные данные в файл CSV на PHP? - PullRequest
0 голосов
/ 29 января 2019

Мне нужно добавить входные данные формы из массива в файл CSV в PHP .

Я попытался добавить данные с помощью foreach *Функция 1008 *, но данные не появились в файле CSV со следующим кодом:

$values = [
    'orderperson',
    'address',
    'postnumber',
    'city',
    'phone',
    'email'
];

$fh = fopen("file.csv", "w");
foreach($values as $info) {
    fputcsv($fh, $_POST[$info]);
}

Если я прав, то, что я пытаюсь сделать здесь, помещает вседанные в один ряд?Как я могу добавить данные в файл так, чтобы в одной строке был только один элемент массива, например:

1 orderperson2 адреса3 postnumber

и не похож на 1 orderperson 2 address 3 postnumber

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Хорошо.Вы, кажется, находитесь на правильном пути.Если вы хотите поместить каждую запись в массиве $ values ​​в новую строку в результирующем файле .csv, выполните следующие действия:

  1. Создайте функцию для объединения полей, установленных в массиве $ data, свходящие данные $ _POST
$postToCsv = function (array $fields, array $super) {
  return array_map(function ($field, $val) {
    return array($field, $val);
  }, $fields, $super);
};

Измените цикл для использования функции из приведенного выше фрагмента.
foreach ($postToCsv($values, $_POST) as $field) {
  fputcsv($fh, $field);
}

Кроме того, не забудьте закрыть операцию с файлом.

fclose($fh);
0 голосов
/ 29 января 2019

fputcsv () разделитель должен быть одним символом

$fh = fopen("file.csv", "w");
$delimiter = ',';
fputcsv($fh, $values, $delimiter);

альтернативно, вы можете попробовать это:

$values = [
'orderperson',
'address',
'postnumber',
'city',
'phone',
'email'
];

$path = 'file.csv';
$handle = fopen($path, 'w+');
foreach($values as $value) {
    fwrite($handle, $value . ',' . PHP_EOL);
}
fclose($handle);

Позже вы можете обрезать последнюю запятую или использовать count () иИзбегайте добавления разделителя для последнего элемента в массиве.


Если, с другой стороны, вы не хотите иметь запятую, а ставить в качестве разделителя новые строки (но это уже не файл CSV!!), вы можете заменить приведенную выше строку fwrite () следующим образом:

fwrite($handle, $value . PHP_EOL);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...