猿问

foreach() 在文件写入时添加空行

我正在尝试从文件中读取和写入!该文件将始终以 6 行开头。默认设置文件如下所示:


10

50

255 255 255

0 255 0

0 255 0

0 255 0

我有一个默认设置文件和另一个在其中完成读写的当前设置文件。


我使用 3 个全局声明的数组来读取和写入值:

$arrayInputs = array();

$arrayDefaults = array();

$arrayColorsHEX = array();

我从默认文件开始:

if(filesize($inputsFilePath)<=0) {

    if ($defaultSettingsFile) {

        // echo "<br>Reading from $defaultFilePath<br>";

        // Fill $arrayDefaults

        $arrayDefaults = explode(PHP_EOL, fread($defaultSettingsFile, filesize($defaultFilePath)));

        fclose($defaultSettingsFile);

        // Output $arrayDefaults

        var_dump($arrayDefaults);

        foreach ($arrayDefaults as $keyD => $valueD) {

            $arrayInputs[$keyD] = $arrayDefaults[$keyD];

        }

        var_dump($arrayInputs);

        $Timer = $arrayDefaults[0];

        $Brightness = $arrayDefaults[1];

        $arrayColorsHEX[0] = RGBtoHexadecimal($arrayDefaults[2]);

        $arrayColorsHEX[1] = RGBtoHexadecimal($arrayDefaults[3]);

        $arrayColorsHEX[2] = RGBtoHexadecimal($arrayDefaults[4]);

        $arrayColorsHEX[3] = RGBtoHexadecimal($arrayDefaults[5]);

    }

}

我填写$arrayDefaults和$arrayInputs。因此,两个数组上的 var_dump 将如下所示:


/var/www/mysite/inputs.php:53:

array (size=7)

  0 => string '10' (length=2)

  1 => string '50' (length=2)

  2 => string '255 255 255' (length=11)

  3 => string '0 255 0' (length=7)

  4 => string '0 255 0' (length=7)

  5 => string '0 255 0' (length=7)

  6 => string '' (length=0)

/var/www/mysite/inputs.php:57:

array (size=7)

  0 => string '10' (length=2)

  1 => string '50' (length=2)

  2 => string '255 255 255' (length=11)

  3 => string '0 255 0' (length=7)

  4 => string '0 255 0' (length=7)

  5 => string '0 255 0' (length=7)

  6 => string '' (length=0)

我不喜欢它在数组中添加另一个空元素的事实,但我想不出修复它的方法。

请注意,我已经尝试了 2 种写入文件的方法。

现在,问题是对于每次页面刷新,代码都会在文件中添加一个空行,在$arrayInputs. 还为每个POST.

我怎样才能解决这个问题 ?


森林海
浏览 251回答 1
1回答

泛舟湖上清波郎朗

您在最后一行后添加 EOL。这就是explode返回 6 条记录的原因。关闭文件后,内容如下所示(注意末尾的 EOL)line1 EOL line2 EOL line3 EOL line4 EOL line5 EOL line 6 EOL您希望您的文件看起来像这样(最后没有任何 EOL):line1 EOL line2 EOL line3 EOL line4 EOL line5 EOL line 6要解决此问题,您可以尝试以下方法之一:建议1:在爆炸前修剪文件内容:换线explode(PHP_EOL, fread($currentSettingsFile, filesize($inputsFilePath)));到explode(PHP_EOL, trim(fread($currentSettingsFile), filesize($inputsFilePath)));建议2:修改写法,如下foreach ($arrayInputs as $key2 => $value2) {&nbsp; if ($key2 != 0) {&nbsp; &nbsp; fwrite($currentSettingsFile,PHP_EOL);&nbsp; }&nbsp; fwrite($currentSettingsFile,$value2);}建议3:使用内爆写入文件,没有任何forfwrite($currentSettingsFile, implode(PHP_EOL, $arrayInputs));就我个人而言,我会选择第三个建议。
随时随地看视频慕课网APP
我要回答