Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重新排列文件中的行_Php_Arrays_File_Input_Io - Fatal编程技术网

Php 重新排列文件中的行

Php 重新排列文件中的行,php,arrays,file,input,io,Php,Arrays,File,Input,Io,我试图从文本文件中读取数据并将其分配给数组。如何一次读取3行,然后将第一行分配给数组$a,第二行分配给数组$b,第三行分配给数组$c?然后再精确地读3行,等等。您可以使用带有maxlen参数的fseek或文件获取内容。但要准确地读3行,我不知道,除非你知道这些行有多长 函数file将所有行读取到一个数组中 编辑两个: 可以逐字节读取文件(虽然在我看来这是一个坏主意),在遇到每个\n或PHP\u EOL后停止,并使用计数器或任何东西来管理它的使用方式 编辑一个: 我刚刚有了这个想法:你可以创建一个

我试图从文本文件中读取数据并将其分配给数组。如何一次读取3行,然后将第一行分配给数组$a,第二行分配给数组$b,第三行分配给数组$c?然后再精确地读3行,等等。

您可以使用带有maxlen参数的
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:我想这取决于正在读取的文件的平均大小,流式传输是否会产生任何明显的差异,但没有提供这些信息。