2014-11-21 6 views
0

CSV의 각 행에 대해 새로운 데이터 "exemple"을 넣으려고합니다. csv의 줄이 다릅니다. 헤더 열 이름은 ExempleRow 일 것입니다. 구분 기호는 세미콜론으로 구분 기호 만 있습니다.PHP는 fputcsv CSV를 사용하여 각 행의 열에 동일한 데이터를 작성합니다.

저는 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

죄송합니다. 내 질문에 오해의 소지가 있습니다. 기본적으로 머리글에 제목이있는 열을 추가하고 나머지 줄을 각 줄마다 동일한 값으로 채워야합니다. 현재 전체 열 (헤더 제목 포함)은 값으로 채워집니다. 머리글에 "머리글 제목"과 나머지 열은 "각 줄마다 내 값"과 같은 제목이 있어야합니다. –

답변

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

환영합니다. 쉼표가 아닌 세미 콜론을 사용하는 이유는 무엇입니까? –