我只是想在矩阵上做一个简单的排序算法,我从 matrix.txt 文件中读取并将排序的矩阵追加回文件。
问题是不需要的新行被写入文本文件。我还尝试了echo
与我在文本文件中写的相同的内容,但是echo
打印一切都没问题。
// .. reading the file and sorting the matrix ..
// Write the sorted matrix back to the text file
$handle = @fopen("matrix.txt", "a");
if ($handle) {
fwrite($handle, PHP_EOL . PHP_EOL . "Sorted matrix:" . PHP_EOL);
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j < $m; $j++) {
echo $matrix[$i][$j] . " ";
fwrite($handle, $matrix[$i][$j] . " ");
}
fwrite($handle, PHP_EOL);
echo "<br>";
}
fclose($handle);
}
matrix.txt 文件内容:
1 2 5 2 5 8 12 323 1 4
8 32 2 1 3 82 2 8 4 2
1 2 5 2 5 8 12 323 1 4
8 32 2 1 3 82 2 8 4 2
在网络浏览器中,它回显矩阵排序,每行自行排序;但是,在文本文件中,附加以下内容:
Matrix sorted using selection sort:
1 1 2 2 4
5 5 8 12 323
1 2 2 2
3 4 8 8 32 82
1 1 2 2 4
5 5 8 12 323
1 2 2 2 3 4 8 8 32 82
任何可能导致此问题的线索?提前谢谢!
答案 0 :(得分:3)
问题不在您发布的代码中;它在你提供的输入矩阵中。请注意,除了最后一行之外,每个额外的换行符都对应于该行的末尾。那是因为当你阅读这一行时,每行的最后一行都被包括在内,而explode
(我想你正在使用)并不知道要删除它。您可以在爆炸之前简单trim
行修复此问题,或明确删除\r
和\n
个字符。