2014-09-23 55 views
1

我遇到了fwrite問題。這就是我所做的。我從文本文件中獲取數據,並將其打印到表格中。在打印這些值後,用戶應該能夠選擇應該刪除的數據(我使用一個鍵來完成)。因此,當他/她點擊刪除時,該文件將發佈哪個密鑰必須被刪除。所有這些工作。我通過刪除鍵來更新數組,並且這也起作用。但是,只要數據必須重寫入文本文件,該文件就會添加另一個空間,導致數組出現「未定義偏移量」錯誤。所以我必須擺脫那條空白線。這是我的代碼 :fwrite在文本文件中添加了空行

<?php 

// Opening the required file 
include("deletefunc.php"); 

$obj = new deletefunc(); 
$result = $obj->getMeData(); 
// Get posted value (The key that has to be deleted from the array) 
$deleteKey = $_POST['rowNumber']; 

$updateArray = array(); 

for($i=0; $i<count($result); $i++){ 
    if($i==$deleteKey){ 

    } 
    else{ 
     $updateArray[$i] = $result[$i]; 
    } 
} 
var_dump($updateArray); 

// Deleting data form textfile (Replacing) 
$filename="phones.txt"; 
$file = fopen($filename,"w"); 
foreach($updateArray as $row){ 
    fwrite($file, $row); 
} 

?> 
+0

是否將空行添加到刪除行的位置? 我想我知道你的問題,如果它確實如此。 – MisterJ 2014-09-23 09:24:05

+0

是的,它添加了一條線,它已被刪除。但奇怪的部分是這隻有當我刪除最後一個。 – Daniel 2014-09-23 09:27:40

+0

因此,它可以很好地移除除最後一行之外的任何行? – MisterJ 2014-09-23 09:28:49

回答

0

這是我的猜想:

你的問題來自於一個事實,即你的元素(除了最後一個)與行尾字符結尾...... 所以當你刪除一個元素在中間,沒問題,但是如果你刪除了最後一個,那麼前面的那個元素有EndOfLine字符,因此你的文件中有一個空行。

所以基本上你應該在寫入文件時添加EndOfLine字符,而不是將它們保存在你的元素中。

要做到這一點,您應該使用PHP_EOL預定義的常量,它是適合平臺的行尾字符。

如果有人想知道這個問題,fwrite() php函數不會添加EOL字符。

+0

非常感謝我用這些信息來解決這個問題! :) – Daniel 2014-09-23 11:58:17

相關問題