2014-11-21 10 views
0

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

Я использую 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, является проблемой? Вы добавляете одну строку за раз. Или вы имеете в виду, что у каждого ROW есть другое количество COLUMNS? –

+0

нет извините, мой вопрос вводит в заблуждение. В основном мне нужно добавить столбец с заголовком заголовка и заполнить остальную часть столбца тем же значением для каждой строки. Сейчас весь столбец (включая заголовок) заполняется значением. Мне нужен заголовок, чтобы иметь заголовок вроде «Заголовок заголовка», а остальная часть столбца - «Мое значение для каждой строки». –

ответ

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

Ваш прием. Могу ли я спросить, почему вы используете запятую, а не запятую? –