Php 重新排列文件中的行
我试图从文本文件中读取数据并将其分配给数组。如何一次读取3行,然后将第一行分配给数组$a,第二行分配给数组$b,第三行分配给数组$c?然后再精确地读3行,等等。您可以使用带有maxlen参数的Php 重新排列文件中的行,php,arrays,file,input,io,Php,Arrays,File,Input,Io,我试图从文本文件中读取数据并将其分配给数组。如何一次读取3行,然后将第一行分配给数组$a,第二行分配给数组$b,第三行分配给数组$c?然后再精确地读3行,等等。您可以使用带有maxlen参数的fseek或文件获取内容。但要准确地读3行,我不知道,除非你知道这些行有多长 函数file将所有行读取到一个数组中 编辑两个: 可以逐字节读取文件(虽然在我看来这是一个坏主意),在遇到每个\n或PHP\u EOL后停止,并使用计数器或任何东西来管理它的使用方式 编辑一个: 我刚刚有了这个想法:你可以创建一个
fseek
或文件获取内容。但要准确地读3行,我不知道,除非你知道这些行有多长
函数file
将所有行读取到一个数组中
编辑两个:
可以逐字节读取文件(虽然在我看来这是一个坏主意),在遇到每个\n
或PHP\u EOL
后停止,并使用计数器或任何东西来管理它的使用方式
编辑一个:
我刚刚有了这个想法:你可以创建一个定制的流包装器,并用它处理你的阅读。它是一个伟大的工具,用于通过上下文、变量或其他任何方式进行文件、检查和控制
我想你还是得找到一个算法。我还没有试过,但是如果你能处理它,请告诉我们。你可以使用带有maxlen参数的fseek
,或者文件获取内容。但要准确地读3行,我不知道,除非你知道这些行有多长
$lines = file('some_file.txt');
$numLines = count($lines);
for ($i = 0; $i < $numLines; $i += 3) {
$a[] = $lines[$i];
$b[] = $lines[$i + 1];
$c[] = $lines[$i + 2];
}
函数file
将所有行读取到一个数组中
编辑两个:
可以逐字节读取文件(虽然在我看来这是一个坏主意),在遇到每个\n
或PHP\u EOL
后停止,并使用计数器或任何东西来管理它的使用方式
编辑一个:
我刚刚有了这个想法:你可以创建一个定制的流包装器,并用它处理你的阅读。它是一个伟大的工具,用于通过上下文、变量或其他任何方式进行文件、检查和控制
我想你还是得找到一个算法。我还没有试过,但是如果你能处理好,请告诉我们。$lines=file('some_file.txt');
$lines = file('some_file.txt');
$numLines = count($lines);
for ($i = 0; $i < $numLines; $i += 3) {
$a[] = $lines[$i];
$b[] = $lines[$i + 1];
$c[] = $lines[$i + 2];
}
$numLines=计数($line);
对于($i=0;$i<$numLines;$i+=3){
$a[]=$line[$i];
$b[]=$line[$i+1];
$c[]=$line[$i+2];
}
请注意,您还需要执行一些越界索引错误检查。我把它留作操作练习。$lines=file('some_file.txt');
$numLines=计数($line);
对于($i=0;$i<$numLines;$i+=3){
$a[]=$line[$i];
$b[]=$line[$i+1];
$c[]=$line[$i+2];
}
请注意,您还需要执行一些越界索引错误检查。我将此作为操作练习。fgets的示例应该会给您一些想法:
fgets的例子应该会给你一些想法:
您可以使用类似以下内容,例如:
$lines = file('filename');
$chunks_array = array_chunk($lines, 3)); - this create array of arrays with 3 lines each
foreach ($chunks_array as $chunks)
{
$a[] = $chunks[0];
$b[] = $chunks[1];
$c[] = $chunks[2];
}
例如,您可以使用如下内容:
$lines = file('filename');
$chunks_array = array_chunk($lines, 3)); - this create array of arrays with 3 lines each
foreach ($chunks_array as $chunks)
{
$a[] = $chunks[0];
$b[] = $chunks[1];
$c[] = $chunks[2];
}
我曾经有过类似的问题。我这样(用伪代码)求解
我曾经有过类似的问题。我这样(用伪代码)求解
使用fgets->Use fgets->最好使用
fgets
来流式传输文件中的数据,而不是缓冲数据…@WillVousden:我想这取决于正在读取的文件的平均大小,流式传输是否会产生任何明显的差异,但是没有提供这些信息。最好使用fgets
流式传输文件中的数据,而不是对其进行缓冲…@WillVousden:我想这取决于正在读取的文件的平均大小,流式传输是否会产生任何明显的差异,但没有提供这些信息。