我有一个9x9的数独矩阵,里面填充了我想要在屏幕上显示并保存在文件中的数字。第一部分很容易,但是当我尝试将矩阵保存在文件中时,我会在其中获得随机空行,我无法弄清楚原因或方法。这是我的代码:
$file = fopen($fileName, "w");
for ($row = 0; $row < 9; $row++)
{
for ($col = 0; $col < 9; $col++)
{
fwrite($file, $this->grid[$row][$col] . " ");
}
fwrite($file, PHP_EOL);
}
fclose($file);
这应该给我9行,它们之间有9列和空格,但是,每次根据网格中的数字得到不同的东西。这是一个例子:
1 5 9 7 2 3 4 6 8
2 3 6 4 8 5 9 7 1
8 4 7 6 9 1 2 3 5
3 6 8 9 4 7 1 5 2
9 1 2 8 5 6 3 4 7
4 7 5 1 3 2 6 8 9
5 8 3 2 6 9 7 1 4
7 2 4 3 1 8 5 9 6
6 9 1 5 7 4 8 2 3
带有这些数字的空白行总是在同一个地方。这是另一个有不同数字的人:
5 1 6 9 7 3 2 8 4
2 7 3 4 8 5 9 6 1
8 4 9 1 2 6 7 5 3
9 5 7 6 3 1 4 2 8
3 8 1 2 4 7 6 9 5
6 2 4 8 5 9 1 3 7
7 3 2 5 6 4 8 1 9
1 6 5 7 9 8 3 4 2
4 9 8 3 1 2 5 7 6
偶尔我会得到一个看起来像这样的人:
6 4 3 7 8 9 2 5 1
9 1 8 2 3 5 4 6 7
5 7 2 6 1 4 8 3 9
1 3 4 8 9 6 5 7 2
7 9 5 3 4 2 1 8 6
8 2 6 1 5 7 9 4 3
2 8 7 4 6 1 3 9 5
3 5 1 9 7 8 6 2 4
4 6 9 5 2 3 7 1 8
代码是相同的,唯一改变的是网格中的数字。如果我用echos替换fwrite,它在浏览器中工作正常并正确显示所有内容但是一旦我将其发送到文件就会变得混乱。 任何建议,因为我完全不知道发生了什么?
编辑: 我发现网格中的值存储为字符串,因此我将一行更改为:
fwrite($file, intval($this->grid[$row][$col]) . " ");
文件中的输出开始显得正常。但是,我仍然不确定为什么字符串有时会导致问题。
答案 0 :(得分:0)
这很简单 - 网格中的一些原始值的内容不是“123”,而是“123 \ n”或“\ n123”。通过查看您的示例 - 这始终是网格行的最后一个元素。
您也可以使用str_replace去除\ n和\ r \ n值,例如str_replace(array(“\ n”,“\ r”),“”,$ this-&gt; grid []而不是intval() $ X] [$ Y])