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

时间:2013-06-10 09:31:41

标签: php

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

这是我到目前为止显示一条随机线。现在我试图找出如何在页面的每个负载上每行循环文本文件行

<?php
$f_contents = file("file.txt");
$line = $f_contents[array_rand($f_contents)];
echo $line."<br>";
?>

3 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是在读取每一行后获取文件中的当前位置(使用ftell()),将该位置保存在用户的session中,然后将其恢复(使用{{ 3}})在阅读下一行之前。与使用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>';

答案 1 :(得分:0)

我认为你正在寻找的是这样的东西:

<?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>";
?>

如果有什么不清楚,我会很乐意帮助

答案 2 :(得分:0)

根据您想要呈现数据的方式,有很多方法可以做到这一点:

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

对于登录的用户(比如当天的提示),您可以在数据库字段中记录他们在文件中的位置,并在需要行时检索它。如果您不想使用数据库,也可以将数据保存在xml中。 这样做的好处是可以在任何计算机上运行,​​但计算上要复杂一些。

如果你的文件有很多行,那么数据库表或xml文件比迭代文本文件更有效。