亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 種寫入文件的方法?,F在,問題是對于每次頁面刷新,代碼都會在文件中添加一個空行,在$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 關注
  • 268 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號