2017-11-08 16 views
0

나는 대답을 찾으려고했지만 성공적이지 못했습니다. 제발 도와주세요.fputcsv, 하나의 행이나 열로 여러 배열

preg_match를 data.txt에서 data.csv의 단일 행 또는 열로 여러 행을 채우려고합니다. 고유 한 번호 만 필요하기 때문에 단일 배열에 있어야합니다. -> 또는 다른 옵션을 유일한 고유 번호를 얻을

배열을 단일 배열로 병합하고 단일 행에 하나의 배열처럼 채울 수 없습니다. 나는 어떤 충고에 대해서 진정으로 행복 할 것입니다. 여기

내 단순화 된 코드이다 : 여기

$filename = 'data.txt'; 
$fupids = array(); 

$handle = fopen($filename, "r"); 
if (!$handle) exit; 

    while (($line = fgets($handle)) !== false) { 
     if (preg_match_all('/([0-9]{8})/',$line,$output)) { 
      $fupid = $output[0]; 
      $file = fopen('data.csv', 'a+'); 
      fputcsv($file, array_unique($output[0]));   
     } 
    } 
fclose($file); 

내 간략화 data.txt로 :

10153231,10159512,10159512,10159512 
10141703,10160541,10160541 
10165815,10158007,10158007 

전류 CSV 출력 :

10153231,10159512 
10141703,10160541 
10165815,10158007 

바람직 출력되는 하나의 행 또는 다음과 같이 한 열을 더 잘 표현할 수 있습니다.

10153231,10159512,10141703,10160541,10165815,10158007 

모두에게 감사드립니다.

+0

파일'스크립트가 시작될 때 data.csv'이 이미 존재합니까? 그리고 괜찮아. 뭘 원해? 한 행 또는 한 열? 또한 입력 파일의 크기는 얼마입니까? –

+0

예 data.csv는 존재하지만 비어 있습니다. 내가 1 행 또는 1 열일 지 여부는 중요하지 않다고 말했듯이 두 가지 해결책을 모두 취할 것입니다. 입력 파일의 크기는 150MB의 텍스트 데이터 로그입니다.이 데이터 집합을 1 행 또는 1 열로 변환하기위한 솔루션을 얻으려면 완전히 만족할 것입니다. – Simon

답변

0

아마도 이런 일이 (테스트하지) : (생각 : 키 array_merge 덮어 씁니다 중복)

$filename = 'data.txt'; 
$fupids = []; 

if (false === $hin = fopen($filename, 'r')) 
    throw new Exception('unable to open input file'); 

if (false === $hout = fopen('data.csv', 'a+')) 
    throw new Exception('unable to open output file'); 

while (false !== $fields = fgetcsv($hin)) { 
    $fupids = array_merge($fupids, array_flip($fields)); 
} 

fclose($hin); 
fwrite($hout, implode(',', array_keys($fupids))); 
fclose($hout); 
+0

다음 오류가 나타나 통지서 : 불확정 변수 : C에서 fupid : \ ... \를 id.php selectfup 라인 18 경고 : array_keys()를 파라미터 1 어레이 널 C에 나와있을 것으로 기대 : \. .. \ selectfupid.php on line 18 Warning : implode() : 잘못된 인수가 18 번 줄에 C : \ ... selectfupid.php로 넘겨졌습니다. – Simon

+0

@Simon : 오타,'$ fupid' =>' $ fupids'. –

+0

나는 그것을 $ array = array_merge ($ array, $ output [0]);로 알아 낸다. – Simon