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

0

Я пытаюсь поместить новые данные "пример" для каждой строки 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);

?> 
  • 0
    Почему количество строк, изменяющихся для каждого CSV, будет проблемой? Вы добавляете одну строку за раз. Или вы имеете в виду, что в каждом ряду есть разное количество КОЛОН?
  • 0
    нет извините мой вопрос вводит в заблуждение. В основном мне нужно добавить столбец с заголовком для заголовка и заполнить оставшуюся часть столбца одинаковым значением для каждой строки. Прямо сейчас весь столбец (включая заголовок заголовка) заполнен значением. Мне нужно, чтобы заголовок имел заголовок, такой как: «Заголовок заголовка», а остальная часть столбца - «Мое значение для каждой строки».
Теги:
csv
arrays
while-loop
fgetcsv

1 ответ

0
Лучший ответ

Если вы хотите отобразить ключи массива в качестве первого столбца, вы можете это сделать. Если у вас нет ассоциативного массива или вы хотите жестко закодировать заголовки столбцов, по какой причине вы можете просто изменить 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);
  • 0
    Спасибо, я изучу ваш код и узнаю больше о возможностях массивов в PHP, так как мне еще многое предстоит узнать! Привет
  • 0
    Пожалуйста. Могу я спросить, почему вы используете точку с запятой, а не запятую?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню