fwrite在textfile中添加一个空行

时间:2014-09-23 08:59:24

标签: php arrays fopen 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);
}

?>

1 个答案:

答案 0 :(得分:0)

这是我的猜测:

您的问题来自于您的元素(最后一个元素除外)以EndOfLine字符结尾的事实...... 因此,当您删除中间的元素时没有问题,但是如果删除最后一个元素,则前一个元素具有EndOfLine字符,因此您的文件中有一个空行。

所以基本上你应该在写入文件时添加EndOfLine字符,而不是将它们保存在元素中。

为此,您应该使用PHP_EOL预定义常量作为适合平台的行尾字符。

如果有人想知道这个问题,fwrite() php函数不会添加EOL字符。