写入时,不需要的新行添加到文本文档中

时间:2013-03-31 19:23:09

标签: php

我只是想在矩阵上做一个简单的排序算法,我从 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 

任何可能导致此问题的线索?提前谢谢!

1 个答案:

答案 0 :(得分:3)

问题不在您发布的代码中;它在你提供的输入矩阵中。请注意,除了最后一行之外,每个额外的换行符都对应于该行的末尾。那是因为当你阅读这一行时,每行的最后一行都被包括在内,而explode(我想你正在使用)并不知道要删除它。您可以在爆炸之前简单trim行修复此问题,或明确删除\r\n个字符。