PHP SplFileObject错误

PHP SplFileObject错误,php,Php,想要分开文本文件中的每一行,颠倒顺序并回显它。 获取的方法SplFileObject::\uu toString()必须返回字符串值错误 代码如下: for ($x=$lines; $x>0; $x--) { $file = new SplFileObject("post.txt"); $file -> seek($x); echo $file; } 我会使用好的旧文件()和数组\u reverse(): 您只是在寻找比您输入的文件长的行 对于这些文件来说,

想要分开文本文件中的每一行,颠倒顺序并回显它。 获取的
方法SplFileObject::\uu toString()必须返回字符串值
错误

代码如下:

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

我会使用好的旧
文件()
数组\u reverse()


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

对于这些文件来说,这是一个问题,因为在迭代到最后之前,您不知道文件中有多少行。文本文件的行数不是存储在文件元数据中的内容,它与文件大小不同。SplFileObject打算使用它的迭代器,迭代器只能
seek()
(从开始到一个特定的行——如果以这种方式反转行,速度相当慢),
next()
,或者
倒带()
(回到开始)。如果你想通读一个文件,它是一个很好的类,但是如果你按照你所说的方式向后看,它就不是一个很好的类

要从末尾向后获取行,您需要使用一个数组,其中每个项都是文件中的一行。这就是旧内置
文件的预期用途

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

$lines = [];
foreach (new SplFileObject('test.txt') as $line) {
    array_unshift($lines, $line);
}

echo implode('', $lines);

尝试
echo$file->current()非常感谢你,菲库斯科。这真的很有帮助!:)
$lines = [];
foreach (new SplFileObject('test.txt') as $line) {
    array_unshift($lines, $line);
}

echo implode('', $lines);