2010-04-18 4 views
0

하나의 CSV 파일을 다른 것으로 변환하는 스크립트를 작성하고 있습니다. 기본적으로 두 개의 foreach 루프가 사용됩니다. 하나는 레코드를 반복하고 다른 하나는 필드를 반복하는 것입니다. 각 레코드의 특정 필드 (cno 25, 26, 44)는 수정해야합니다. 문제는 각 수정자가 여분의 빈 필드를 만듭니다. 즉, 코드PHP : csv generator가 추가 필드를 만듭니다.

$colStr .= '"' . $col . '";'; 

이 작동하지만 if 문에있는 코드는 생성되지 않습니다. ..

와우, 단지/다른 논리가 엉망이 된 경우 :(젠장 실현
$rno = 0; 
foreach ($csvArray as $line) 
{ 
$cno = 0; 
$colStr = ""; 

foreach ($line as $col) 
{ 

    if($rno>0 && $cno==25) 
    { 
    $stuff = array($csvArray[$rno][41], $csvArray[$rno][47], $csvArray[$rno][48], $csvArray[$rno][49]); 


    foreach($stuff as &$value) 
    { 
    $value = preg_replace('/[^0-9]/', '', $value); 
    } 
    sort($stuff, SORT_NUMERIC); 

    // Causes bug! 
    $colStr .= '"' . $stuff[0] . '";'; 
    } 

    if($rno>0 && $cno==26) 
    { 
    $urls = ""; 

    for($i = 55; $i<=62; $i++) 
    { 
    $urls .= "Images: " . $csvArray[$rno][$i] . " | "; 
    } 
    $urls .= "Some text: " . $csvArray[$rno][43] . " | "; 

    // Causes bug! 
    $colStr .= '"' . $urls . '";'; 
    } 

    if($rno>0 && $cno==44) 
    { 
    $colStr .= '"' . $_POST['location'][$rno] . '";'; 
    } 

    if($rno>0 && $cno==54) 
    { 
    $objType = $col; 

    $objType = preg_replace('/foobar/i', '123', $objType); 

    // Causes bug! 
    $colStr .= '"' . $objType . '";'; 
    } 

    else 
    { 
    // This is ok, though 
    $colStr .= '"' . $col . '";'; 
    } 

    $cno++; 
} 

$colStr = preg_replace('/;$/', '', $colStr); 
$colStr .= "\n"; 
fwrite($outputFile, $colStr); 
$rno++; 

} 

fclose($outputFile); 
+0

는 입력과 출력에서 ​​몇 가지 샘플 라인을 제공 당신은에 추가 :

코드는 여분의 구획 문자 어딘가에? – thetaiko

답변

관련 문제