Ifyou не нужно проверять в каждой итерации, вы можете сделать так:
$vokatra_res = fopen(RP_MAIN . "vokatra.res","a+");
$p = $vokatra->lireTout(array(), array("type_id")); // getting rows from database
for($l=0 ; $l<$p['cnt']-1 ; $l++) {
$str = $p[$l]['produit_code'] . '|' . $p[$l]['type_id'] . '|' . $p[$l]['produit_lib'] . "\r\n";
fwrite($vokatra_res, $str);
}
$str = $p[$l]['produit_code'] . '|' . $p[$l]['type_id'] . '|' . $p[$l]['produit_lib'];
fwrite($vokatra_res, $str);
fclose($vokatra_res);
Вы покидаете последнюю строку вне для цикла. и вы не ставите на него «\ r \ n».
В противном случае:
$vokatra_res = fopen(RP_MAIN . "vokatra.res","a+");
$p = $vokatra->lireTout(array(), array("type_id")); // getting rows from database
for($l=0 ; $l<$p['cnt']; $l++) {
$str = $p[$l]['produit_code'] . '|' . $p[$l]['type_id'] . '|' . $p[$l]['produit_lib'];
if ($l < $p['cnt'] - 1) {
$str .= '\r\n',
}
fwrite($vokatra_res, $str);
}
fclose($vokatra_res);
Разве это не очень важно, как проверить последнюю строку во время цикла. Важно, чтобы избежать написания к двойной в файл как:
for($l=0 ; $l<$p['cnt']; $l++) {
$str = $p[$l]['produit_code'] . '|' . $p[$l]['type_id'] . '|' . $p[$l]['produit_lib'];
fwrite($vokatra_res, $str);
if ($l < $p['cnt'] - 1) {
fwrite($vokatra_res, '\r\n');
}
}
Если вы не имеете пустую строку в конце, ваши данные будут все в один большой комок, как это добавляется к файлу. Покажите нам пример проблемы. Это определенно '. «\ r \ n» «делает это. –
Возможно, «\ r \ n» создает пустую последнюю строку? Я лично вставлял бы if внутри цикла for, проверяя: 'if ($ l == ($ p ['cnt'] - 1)) {// печатать без" \ r \ n ", потому что это последняя строка} '. – briosheje