Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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/9/loops/2.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_Loops_Foreach - Fatal编程技术网

Php 将循环划分为部分

Php 将循环划分为部分,php,loops,foreach,Php,Loops,Foreach,我有一个大约25k行的大文本文件。。。我需要把它们分成2000个,然后把每个2000个放到文本文件中…到目前为止我已经有了代码 <?php $lines = file("largefile.txt", FILE_IGNORE_NEW_LINES); $i = 1; foreach($lines as $lol) { //now i need to put first 2000 lines in 1.txt and then next 2000 lines in 2.txt file_

我有一个大约25k行的大文本文件。。。我需要把它们分成2000个,然后把每个2000个放到文本文件中…到目前为止我已经有了代码

<?php

$lines = file("largefile.txt", FILE_IGNORE_NEW_LINES);

$i = 1;
foreach($lines as $lol)
{

//now i need to put first 2000 lines in 1.txt and then next 2000 lines in 2.txt
file_put_contents($i".txt", $lol . PHP_EOL, FILE_APPEND)

}

?>


现在我需要在1.txt中放入前2000行,然后在2.txt中放入下2000行,依此类推。

我认为您可以在lines数组中循环并计算循环,这样您就可以根据所需的总行数更改文件名,如下所示

$i=1;
$o=0;
for($u=0;$u<count($lines);$u++)
{
    if($o<2000)
    {
         file_put_contents($i".txt", $lines[$u] . PHP_EOL, FILE_APPEND);
         $o++;
    } else {
        $i++;
        file_put_contents($i".txt", $lines[$u] . PHP_EOL, FILE_APPEND);           
        $o=1;
    }            
}
$i=1;
$o=0;

对于($u=0;$u我认为您可以在lines数组中循环并计算循环次数,因此您可以根据所需的总行数更改文件名,如下所示

$i=1;
$o=0;
for($u=0;$u<count($lines);$u++)
{
    if($o<2000)
    {
         file_put_contents($i".txt", $lines[$u] . PHP_EOL, FILE_APPEND);
         $o++;
    } else {
        $i++;
        file_put_contents($i".txt", $lines[$u] . PHP_EOL, FILE_APPEND);           
        $o=1;
    }            
}
$i=1;
$o=0;
对于($u=0;$u谢谢。
我认为您可以像这样使用linux命令split

<?php
    exec("split largefile.txt -l 2000");
?>

谢谢。 我认为您可以像这样使用linux命令split

<?php
    exec("split largefile.txt -l 2000");
?>


使用Linux的split命令不是更好吗?使用Linux的split命令不是更好吗?我认为它只创建2个文本文件它应该创建与文件中/2000行数相同的文件,您尝试过吗?我认为它只创建2个文本文件它应该创建与文件中/2000行数相同的文件,您尝试过吗?