为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
森林海 2021-08-28 09:03:53
我正在尝试从文件中读取和写入!该文件将始终以 6 行开头。默认设置文件如下所示:1050255 255 2550 255 00 255 00 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.我怎样才能解决这个问题 ?
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您在最后一行后添加 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) {

  if ($key2 != 0) {

    fwrite($currentSettingsFile,PHP_EOL);

  }

  fwrite($currentSettingsFile,$value2);

}

建议3:使用内爆写入文件,没有任何for


fwrite($currentSettingsFile, implode(PHP_EOL, $arrayInputs));

就我个人而言,我会选择第三个建议。


查看完整回答
反对 回复 2021-08-28
  • 1 回答
  • 0 关注
  • 250 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信