我正在尝试从文本文件中读取数据并将其分配给数组。我怎么能一次读出3行,然后将第一行分配给数组$ a,将第二行分配给数组$ b,将第三行分配给数组$ c?然后准确阅读3行等等。
答案 0 :(得分:2)
$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];
}
请注意,您也希望进行一些越界索引错误检查。我将其留作OP的练习。
答案 1 :(得分:1)
您可以将fseek
或file_get_contents
与maxlen参数一起使用。但要准确读出3行,我实际上并不知道,除非你知道这些行有多长。
function file
将所有行读入数组。
编辑二:
可以逐字节读取文件(虽然从我的观点来看是个坏主意)并在遇到每个\n
或PHP_EOL
后停止并使用计数器或其他任何东西来管理它的使用方式。
编辑一个:
我刚才有了这个想法:你可以创建一个自定义的流包装器,并用它来处理读3到3行。它是一个很棒的文件工具,检查http://www.php.net/manual/en/class.streamwrapper.php,并通过上下文或变量控制它,或者什么都可以。
我猜你仍然需要找到一个算法。我还没有尝试过这个,但如果你处理它,请告诉我们。
答案 2 :(得分:1)
fgets
的示例应该为您提供一些想法:
http://php.net/manual/en/function.fgets.php#refsect1-function.fgets-examples
答案 3 :(得分:1)
你可以使用这样的东西,例如:
$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];
}
答案 4 :(得分:1)
一旦我遇到类似的问题。我这样解决(伪代码)。
counter = 1;
while reading
switch counter
case 1: store in the first array then break;
case 2: store in the second array then break;
case 3: store in the third array, counter = 0, then break;
counter++;
end-while