在刷新/加载时显示下一行


Display next line on refresh/load

我有一个文本文件,我能够显示每一行随机每次我的页面加载php。我想知道是否有可能用PHP代码每次以与文本文件相同的顺序加载页面时回显新行?

这是我到目前为止所显示的随机行。现在我想弄清楚如何在每次加载页面

时逐行循环使用文本文件。
<?php
$f_contents = file("file.txt");
$line = $f_contents[array_rand($f_contents)];
echo $line."<br>";
?>

一种方法是在读取每行后获取文件中的当前位置(使用ftell()),将该位置保存在用户会话中,并在读取下一行之前恢复它(使用fseek())。与使用file()相比,这样做的优点是每次只需要将一行读入内存,而不是将整个文件读入内存(尽管对文件所做的更改可能会导致读取部分行,这可以在必要时进行处理)。

<?php
// Load session and open tips file
session_start();
$fp = fopen('README', 'r');
// Go to where we left off
if (isset($_SESSION['offset'])) {
    fseek($fp, $_SESSION['offset']);
}
// Read that line
$line = fgets($fp);
if ($line === false) {
    // Hit end of file; go back to the beginning
    fseek($fp, 0);
    $line = fgets($fp);
}
// Save the position of the next line and close the file
$_SESSION['offset'] = ftell($fp);
fclose($fp);
// Output the line
echo '<p>' . htmlspecialchars($line) . '</p>';

我想这就是你要找的东西:

<?php
$line_number = isset($_SESSION['LINE_NO']) ? $_SESSION['LINE_NO'] + 1 : 1;
$_SESSION['LINE_NO'] = $line_number;
$f_contents = file("file.txt");
$line = $f_contents[$line_number];
echo $line."<br>";
?>

如果有什么不清楚的地方,我很乐意帮助

有很多方法可以做到这一点,这取决于您希望如何呈现数据:

发送一个行给不需要登录的用户,你可以保持指针在SESSION(虽然它将重置为零,如果他们关闭他们的浏览器)或设置一个cookie作为一个指针,它将保留数据,直到它过期或被删除。

对于登录的用户(例如每日提示),您可以在数据库字段中保存他们在文件中的位置记录,并在需要一行时检索此记录。如果不想使用db,也可以将数据保存为xml。这样做的优点是可以在任何一台计算机上工作,但在计算上要复杂一些。

如果您的文件有很多行,那么数据库表或xml文件将比遍历文本文件更有效。