【发布时间】:2011-08-10 01:12:44
【问题描述】:
首先,我基本上有一个函数,它打开一个文本文件,抓取第一行,将其从文件中删除,然后将文件与其余部分一起保存。一切正常,除非我使用 return 语句返回检索到的行。使用 return 语句,由于某种原因它会清除文件;删除 return 语句,函数会做它应该做的事情。我正在争论这是否是一个 PHP 错误,或者这里是否隐藏了一些我没有看到的东西。下面列出了部分代码,任何帮助将不胜感激。
谢谢!
$nlines = array();
$lines = file(CACHE_PATH."/test.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$link = $lines[0];
$lcount = count($lines)-1;
for($i=1; $i < $lcount; $i++)
{
$nlines[] = $lines[$i];
}
$file = fopen(CACHE_PATH."/test.txt", 'w');
for($i=0; $i <= $lcount; $i++)
{
fwrite($file, $nlines[$i]);
}
fclose($file);
return $link;
【问题讨论】:
-
你能创建一个最小的测试用例来演示这个问题吗?
-
您意识到您只是将
count($lines)-2元素添加到$nlines,但您正在尝试从中读取count($lines)元素? -
@Oli Charlesworth 我知道我几乎是从数组中的 1 开始,但在我正在做的事情之前结束 2,但我不明白你在做什么“从中读取 count() 元素”。计数只是获取数组中元素的数量,使用它,我可以根据索引$i从文件中抓取行到$nlines。无论如何,Saben Malik 对我的方法有更好的解决方案,应该想到它。不幸的是,这并不能解决退货问题。我将用一个测试用例场景来评论正在发生的事情。谢谢!
-
这是测试用例场景。
function example(){ $lines = file("test.txt"); $lnk = $lines[0]; $file = fopen("test.txt", 'a'); fwrite($file, "test text"); fclose($file); return $lnk; }上面的代码中(没测试过,刚写的)要抓取文件的第一行,要清空文件,要写文本“测试文本”。但是,随着函数中的return语句,文件被完全清除,刚刚写入的文本消失了。希望这可以澄清。谢谢