Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP fwrite()随机添加空行_Php_File_Fwrite - Fatal编程技术网

PHP fwrite()随机添加空行

PHP fwrite()随机添加空行,php,file,fwrite,Php,File,Fwrite,我有一个9x9数独矩阵,里面装满了我试图在屏幕上显示并保存在文件中的数字。第一部分工作起来很容易,但当我试图将矩阵保存到一个文件中时,我会得到随机的空行,我不知道为什么或者如何。以下是我的代码: $file = fopen($fileName, "w"); for ($row = 0; $row < 9; $row++) { for ($col = 0; $col < 9; $col++) { fwrit

我有一个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);
带有这些数字的空行始终位于同一位置。这是另一个有不同数字的:

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]) . " ");

文件中的输出开始看起来正常。但是,我仍然不确定为什么字符串有时会导致问题。

这很简单-网格中的一些原始值的内容不是123,而是123\n或123。通过查看示例,这始终是网格行的最后一个元素


您也可以使用str_replace代替intval来剥离\n和\r值,例如,像这样的str_replacearray\n\r,,$this->grid[$x][$y]

首先进行调试。显示这些输出很好,但最好确切地显示其中包含的空白类型。这些空行是额外的吗\r\n?还有什么吗?@Jon你可以从他使用PHP的代码中看到,我猜额外的换行符出现在一些$grid元素中。看看填充数组的代码。看起来a一些$row不存在,或者b一些$col在一行末尾有新行附加到它们的值。intval或trim将从末尾删除多余的空格。@mmvsbg您正在从文件中读取数字吗?如果您使用file,它会在结果中保留换行符,除非您使用file\u IGNORE\u NEW\u行。
fwrite($file, intval($this->grid[$row][$col]) . " ");