PHP использует CSV-файл fputcsv для записи одних и тех же данных в столбец для каждой строки.

Я пытаюсь поместить новый «образец» данных для каждой строки CSV. Линии CSV различаются. Имя столбца заголовка будет ExempleRow. Разделителя нет, только разделитель, который представляет собой точку с запятой.

Я использую fputcsv, у него должен быть массив для заполнения файла csv желаемыми данными. Но в моем случае количество строк меняется для каждого csv.

Пока он добавляет новый столбец, но я не могу понять, как поместить одно и то же значение в каждую строку для этого столбца?

<?php
$newCsvData = array(); // here should I specify the same data value "exemple data" for each line ? but how ?

if (($handle = fopen("exemple.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 9999, ";")) !== FALSE) {
        $data[] = 'ExempleRow';
        $newCsvData[] = $data;
    }
    fclose($handle);
}

$handle = fopen('exemple.csv', 'w');

foreach ($newCsvData as $line) {
   fputcsv($handle, $line,';',' ');
}

fclose($handle);

?> 

person Mickael B    schedule 21.11.2014    source источник
comment
Почему может возникнуть проблема с изменением количества строк для каждого CSV? Вы добавляете по одной строке за раз. Или вы имеете в виду, что в каждой СТРОКЕ разное количество КОЛОНН?   -  person David Jones    schedule 21.11.2014
comment
нет, извините, мой вопрос вводит в заблуждение. В основном мне нужно добавить столбец с заголовком для заголовка и заполнить остальную часть столбца одинаковым значением для каждой строки. Сейчас весь столбец (включая заголовок) заполнен значением. Мне нужно, чтобы заголовок имел заголовок, например: Заголовок заголовка, а остальная часть столбца с моим значением для каждой строки.   -  person Mickael B    schedule 21.11.2014


Ответы (1)


Если вы хотите показать ключи массива в качестве первого столбца, вы можете сделать это. Если у вас нет ассоциативного массива или вы хотите жестко закодировать заголовки столбцов по какой-либо причине, вы можете просто изменить array_keys($line) для жестко закодированного массива.

$handle = fopen('exemple.csv', 'w');
$keys = false;

foreach ($newCsvData as $line) {
   if ($keys === false) {
       //$header = array('HeaderOne', 'HeaderTwo', 'HeaderThree', 'HeaderFour'); Use this if you want to hard code your headers
       fputcsv($handle, array_keys($line), ';', '');
       $keys = true;
   }
   fputcsv($handle, $line,';',' ');
}

fclose($handle);
person David Jones    schedule 21.11.2014
comment
Спасибо, я изучу ваш код и узнаю больше о возможностях массивов в PHP, так как мне еще есть чему поучиться! Приветствую - person Mickael B; 21.11.2014
comment
Добро пожаловать. Могу я спросить, почему вы используете точку с запятой, а не запятую? - person David Jones; 21.11.2014