PHP SplFileObject错误

时间:2015-04-20 19:18:41

标签: php

想要分开文本文件中的每一行,颠倒顺序并回显它。 出现Method SplFileObject::__toString() must return a string value错误。

Herr的代码:

for ($x=$lines; $x>0; $x--) {
    $file = new SplFileObject("post.txt");
    $file -> seek($x);
    echo $file;
}

2 个答案:

答案 0 :(得分:1)

我会将好file()array_reverse()一起使用:

foreach(array_reverse(file('file.txt')) as $line) {
    echo $line;
}

答案 1 :(得分:1)

您只是寻找比您输入的文件更长的行。

对于这些文件,这是一个问题,因为在迭代到最后之前,您不会知道文件中有多少行。文本文件的行数不是存储在文件元数据中的东西 - 它与文件大小不同。 SplFileObject旨在使用它的迭代器,它只能seek()(从头开始到特定的行 - 如果你用这种方式反转行,相当慢),next()或{{1 (回到开头)。如果你想阅读一个文件,这是一个很好的课程,但不能很好地按照你指示的方式倒退。

要从末尾向后移动线条,您需要使用一个数组,其中每个项目都是文件中的一行。这是旧内置rewind()http://php.net/manual/en/function.file.php)的预期用途。

如果您的心脏被设置在SplFileObject上,因为您想在代码中的其他位置使用它,您可以反向构建一个数组:

file