Foreach循环打印重复的最后一项并输出到数据文件


Foreach loop printing duplicate last entry with output to data file

我有一个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>

问题在于我对fwrite如何工作的理解。我写了最后一个foreach 'output'变量两次,第二次添加了%%EOF,因此它看起来像是foreach循环发送的副本。

固定编码部分:

echo $output;
fwrite($fh, $output);
}
fwrite($fh, "%%EOF");

感谢所有试图帮助我的人!感谢