2016-04-16 12 views
0

csvのデータを置き換えて、新しいcsvファイルに保存したいものをすべて変更した後で、 私はphp.netからのコードでcsvを読むことができますが、私は新しいファイルを保存するためにそれを得ることができません。私はこのPHPはcsvを開いて新しいcsvにデータを保存します

$row = 0; 
    if (($handle = fopen("original.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 20000, ";")) !== FALSE) { 
    $num = count($data); 
    $cat_alt = ['cold', 'hot', ... and so on...];                
    $cat_neu = ['kalt', 'heiß', ...und so weiter...]; 

    echo "<p> $num Felder in Zeile $row: <br /></p>\n"; 
    $row++; 
    for ($c=0; $c < $num; $c++) { 
     $output = str_replace($cat_alt, $cat_neu, $data[$c] . "<br />\n"); 
     echo $output; 


    }   
    } 
} 

    $fp = fopen('changed.csv', 'w'); 

    foreach ($row as $rows) { 
    fputcsv($fp, $rows);   

    }fclose($fp); 
+0

どのようなエラーが表示されますか?何がうまくいかない?保存されたファイルはどのように見えますか? – budwiser

+0

私はエラーは表示されませんが、元のcsvの内容は取得されます。変更された内容は 'changed.csv'に保存されません。ファイルはサーバーで作成されますが、空です。 – Kallmas

答えて

2

持っているあなたは、2つのオプションがあります。あらかじめ

  1. 使用し、n個の配列

    $rows = [] 
    ... 
    $rows[] = str_replace($cat_alt, $cat_neu, $data[$c] . "\n"); 
    ... 
    fputcsv($fp, $rows); 
    
  2. オープン出力ファイルを、あなたがデータを処理するとしてそれに書き込む

    $fp = fopen('changed.csv', 'w'); 
    if (($handle = fopen("original.csv", "r")) !== FALSE) { 
        while (($data = fgetcsv($handle, 20000, ";")) !== FALSE) { 
         $num = count($data); 
         $cat_alt = ['cold', 'hot', ... and so on...];                
         $cat_neu = ['kalt', 'heiß', ...und so weiter...]; 
    
         echo "<p> $num Felder in Zeile $row: <br /></p>\n"; 
         $row++; 
         for ($c=0; $c < $num; $c++) { 
          fputs($fp, str_replace($cat_alt, $cat_neu, $data[$c] . "<br />\n")); 
         } 
        } 
    } 
    
    fclose($fp); 
    
+0

更新されたオプション2を表示 – yk11

関連する問題