если еще инди инди цикл - PullRequest
0 голосов
/ 02 марта 2012

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

$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);

Он не выдает никаких ошибок, но кажется, что весь условный блок игнорируется.Помощь

Ответы [ 2 ]

0 голосов
/ 02 марта 2012

Вы нигде не читаете с $file_handle. feof($file_handle) никогда не будет правдой. После публикации этот код должен зацикливаться вечно.

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

0 голосов
/ 02 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...