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);