Цикл печати по каждому элементу дублирует последнюю запись с выводом в файл данных
У меня есть цикл foreach, который перебирает, чтобы представить HTML и сохранить данные в файл данных. Проблема (которая поднималась ранее) заключается в том, что последняя аллитерация цикла foreach дублируется. Использование unset не работает, так как записывает файл данных из цикла foreach! Как я могу исправить эту проблему? Я хочу вырезать дубликат и сохранить запись в файл данных...
Мой код:
// Save data to a DAT file
$datafile = "datfile.dat";
$fh = fopen($datafile, 'w') or die("can't open file");
foreach($xml->DROP as $shipment) {
$CONNOTE_ID = $shipment->HEADER->BILL_OF_LADING; // 20 CHARS
$output = sprintf("%-20.20s", $CONNOTE_ID);
echo $output;
unset($shipment);
fwrite($fh, $output);
}
$output .= "%%EOF";
fwrite($fh, $output);
echo "%%EOF";
fclose($fh);
XML:
<?xml version="1.0" encoding="UTF-8"?>
<ISHPMNT1>
<DROP>
<HEADER>
<BILL_OF_LADING>VW038687030000006</BILL_OF_LADING>
</HEADER>
</DROP>
</ISHPMNT1>
1 ответ
Решение
Проблема заключалась в моем понимании того, как работает fwrite. Я дважды писал последнюю выходную переменную foreach, причем вторая добавляла %%EOF, поэтому она казалась дубликатом, переданным циклом foreach.
Исправлено раздел кодирования:
echo $output;
fwrite($fh, $output);
}
fwrite($fh, "%%EOF");
спасибо всем, кто пытался помочь! Очень признателен