2012-03-02 11 views
0

私はPHP経由でCSVファイルを処理しようとしています。私はそれを動作させています。しかし、私は条件のセットに基づいて変更する必要があるこの1つの配列があります。elseif indie whileループ

$file_handle = fopen($path, "r"); 
while (!feof($file_handle)) { 
    $line_of_text = fgetcsv($file_handle, 100000); 
    if($currency == "US"){ 
     $line_of_text[6] = str_replace ("if_you_find_this","change_to_this",$line_of_text[6]); 
     $line_of_text[6] = str_replace ("if_you_find_this","change_to_this",$line_of_text[6]); 
    } elseif($currency == "DE"){ 
     $line_of_text[6] = str_replace ("if_you_find_this","change_to_this",$line_of_text[6]); 
     $line_of_text[6] = str_replace ("if_you_find_this","change_to_this",$line_of_text[6]); 
}else { 
     echo "Something with currency handling went wrong. Please contact support."; 
} 
    $data .= $line_of_text[0] . "," . $line_of_text[1] . "," . $line_of_text[2] . "," . $line_of_text[4] . "," . $line_of_text[6] . "," . $line_of_text[49] . "," . $line_of_text[51] . "\n"; 

} 
fclose($file_handle); 

$new_file_handle = fopen($path, "w"); 
fwrite($new_file_handle, $data); 

エラーは発生しませんが、条件ブロック全体が無視されているようです。助けて?

+0

すでに作業ファイルに入っている重要な行に貼り付けるのを忘れた - > $ line_of_text = fgetcsv($ file_handle、100000); – jeffimperial

答えて

0

どこでも$file_handleから読んでいるわけではありません。 feof($file_handle)は決して真実ではありません。投稿されると、このコードは永遠にループするはずです。

は(ところで、このようなfeofを使用すると、あなたが他の人の間でこのような理由のために、それをしたくない方法が一般的である。より良いwhile (($line = however_you_read($file_handle)) !== FALSE)ようなものになるだろう。)ほとんどすべてのストリーム読出し機能は、任意のエラーにFALSEを返しますか、

0

ファイルが正しく開かれているかどうかを確認します。 try catchにそのコードを書きます。エラーがあれば、それを見つけることができます。 ファイルに何も含まれていないか、正常に開くことができません。