-1

我只是想对从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

在 Web 浏览器中,它与排序良好的矩阵相呼应,每一行都是单独的;但是,在文本文件中,附加了以下内容:

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 

任何线索可能导致这种情况?提前致谢 !

4

1 回答 1

3

问题不在于您发布的代码;它在您提供的输入矩阵中。请注意,每个额外的换行符都对应于过去位于行尾的项目,最后一行除外。那是因为当您阅读该行时,每行的最后一个换行符都包含在内,并且explode(我想您正在使用)不知道将其删除。您可以trim在爆炸之前简单地修复此问题,或者专门删除\r\n字符。

于 2013-03-31T19:26:07.530 回答