2012-03-02 3 views
0

Я пытаюсь обрабатывать файл CSV через php, и у меня он работает. Но есть один массив, который мне нужно изменить на основе набора условий.if elseif indie while loop

$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) никогда не будет правдой. Как указано, этот код должен циклически навсегда.

(BTW, используя feof, как это, как правило, не так, как вы хотите это сделать, по этой причине среди других. Лучше бы что-то вроде while (($line = however_you_read($file_handle)) !== FALSE).) Практически все функции потоковых чтений возвращают FALSE на какой-либо ошибке, или на EOF.)

0

Проверить правильность открытия файла или нет. Напишите этот код в try catch, поэтому, если какая-либо ошибка, вы можете его найти. Я думаю, что файл не содержит ничего или он не открывается успешно.