Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从文本文件中检索随机行,然后在PHP中从文本文件中删除该行_Php_File Io - Fatal编程技术网

如何从文本文件中检索随机行,然后在PHP中从文本文件中删除该行

如何从文本文件中检索随机行,然后在PHP中从文本文件中删除该行,php,file-io,Php,File Io,我很难思考该怎么做。我想显示一个特定文本文件中的随机行,然后在它显示后,它将从文本文件中删除该行,这样当页面刷新时它将不再显示 $lines = file(''); echo $lines[array_rand($lines)]; 文件将行读入数组array\u rand从行数组中获取随机键unset删除元素文件\u放入内容以写回文件 $filename = 'filename.txt'; $lines = file($filename); $r = array_rand($lines);

我很难思考该怎么做。我想显示一个特定文本文件中的随机行,然后在它显示后,它将从文本文件中删除该行,这样当页面刷新时它将不再显示

$lines = file('');
echo $lines[array_rand($lines)];

文件
将行读入数组
array\u rand
从行数组中获取随机键
unset
删除元素<代码>文件\u放入内容以写回文件

$filename = 'filename.txt';
$lines = file($filename);
$r = array_rand($lines);

echo $lines[$r];
unset($lines[$r]);
file_put_contents($filename, implode("", $lines));

那很好。祝你好运。你有问题吗?打开文件,把每一行都推到一个数组中。回显随机行,将该行存储为字符串。通过使用if语句重新编写另一个没有该行的数组——对于“如果值与存储的字符串匹配”,如果匹配,则不要将该行推送到新数组。循环新数组,将每一行写入文件。不过,我不会为你写代码。不管出于什么原因,你认为这是个好主意……如果你只是想输出内容,然后删除,试着使用数据库。有没有办法每次都从同一个文本文件中删除空行?因为这种方式会在每一个文本行之间创建空行。为什么不输出$lines所包含的内容,并查看如何不能内爆空行\n的@user3791824应该能够将
内爆(“\n”,$lines)
更改为
内爆(''.$lines)
,因为
文件
包含新行,除非调用
文件($filename,FILE_IGNORE_NEW_line);
@fyrye,谢谢你指出这一点。另外,rand应该是
rand(0,count($line)-1);