2011-09-28 2 views
0

정리가 필요한 csv 파일이 있습니다. 13 개의 필드가 있지만 영업 (주소, 도시, 성, 우편 번호, 우편 번호, 이메일)은배열 결과를 CSV 파일에 쓰는 중

입니다. 모든 레코드를 실행하고 이메일 주소가있는 레코드의 새로운 출력을 만들어야합니다. .

간단히 말해서 ... 원본 파일을로드하고 for 루프를 실행하고 결과를 분해 한 다음 $ tmp [10] 인덱스가 null이 아닌 레코드를 찾습니다. 그런 다음 나머지 나머지 필드를 가져 와서 foreach 루프를 수행하고 결과를 새 CSV 파일에 씁니다.

코드를 조정하는 방법에 따라 나는 다음 중 하나를 얻습니다. 전자 메일 주소의 텍스트 파일입니다. 또는 전자 메일 주소가있는 마지막 레코드의 텍스트 파일입니다.

나는이 작업을 너무 오랫동안 해왔으며 문제를 지적하기 위해 새로운 눈이 필요합니다. 나는 PHP에 익숙하지 않고이 작업을하고 싶다. 미리 감사드립니다.

빠른 눈에서
<?php 
    // See if file exists and is readable 
    $file = 'uploads/AK_Accountants.csv'; 
    $newfile = basename($file,".csv"); 
    $newfile = $newfile.Date("Ymd").".csw"; 
    $fileNew = fopen('uploads/AK_'.Date("Ymd").'.csv','w+'); 
    // Read the file into an array called $sourcefile 
    $sourcefile = file($file); 
    // Loop through the array and process each line 
    for ($i = 0; $i < count($sourcefile); $i++) { 
     // Separate each element and store in a temp array 
     $tmp = explode('","', $sourcefile[$i]); 
     // Assign each element of the temp array to a named array key 
     if ($tmp[10] != "") { 
      $sourcefile[$i] = array('Business_Name' => $tmp[1], 'Address' => $tmp[3], 'City' => $tmp[4], 'State' => $tmp[5], 'Zip' => $tmp[6], 'Phone' => $tmp[7], 'Email' => $tmp[10]); 
      foreach($sourcefile[$i] as $key => $value); 
       fwrite($fileNew, $value); 
     } 
    } 
    ?> 
+3

HTH :) 것을, 거기 수행 의미 오랜 시간이지만 실제로이 코드는 187 페이지에서 * PHP 솔루션, 동적 웹 디자인을 쉽게 데이비드 파워와 요에 의해 만들어진 것입니다 u는 정말로 그것에 많은 것을 전혀 추가하지 않았다. ;) – webbiedave

+0

귀하의 제안이 도움이되었습니다. 감사합니다 – user969841

+1

이것은 의견 섹션입니다. 답변은 다음과 같습니다. 답변에 댓글을 달려면 답변 바로 아래에있는 '댓글 추가'링크를 클릭하십시오. – webbiedave

답변

3

:

foreach($sourcefile[$i] as $key => $value); 
    fwrite($fileNew, $value); 

오히려 내가

를해야 가정 것보다, 당신이

$newfile = $newfile.Date("Ymd").".csw"; 

이 또한

foreach($sourcefile[$i] as $key => $value){ 
    fwrite($fileNew, $value); 
} 

해야한다

$newfile = $newfile.Date("Ymd").".csv"; 
0

마지막 foreach 문은 ';'로 끝납니다. 코드 블록이 없습니다. foreach 문이 반복되면 파일에 기록 된 마지막 값, 즉 전자 메일 주소 만 가져옵니다.

현재

foreach (...) ; 
fwrite(...);. 

을 가지고 있지만 당신은 아마

foreach(...) { 
    fwrite(...) ; 
} 

당신은이 코드에 노력하고 있다고 말할