我对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 :(得分:0)
这是我的猜测:
您的问题来自于您的元素(最后一个元素除外)以EndOfLine字符结尾的事实...... 因此,当您删除中间的元素时没有问题,但是如果删除最后一个元素,则前一个元素具有EndOfLine字符,因此您的文件中有一个空行。
所以基本上你应该在写入文件时添加EndOfLine字符,而不是将它们保存在元素中。
为此,您应该使用PHP_EOL
预定义常量作为适合平台的行尾字符。
如果有人想知道这个问题,fwrite()
php函数不会添加EOL字符。