php 如何将txt文件的每5个迭代行进行分组[duplicate]

ecbunoof  于 2022-10-30  发布在  PHP
关注(0)|答案(3)|浏览(123)

此问题在此处已有答案

Insert 4-column rows into database table from a flat array with a size divisible by four(3个答案)
16小时前就关门了。
Txt文件是这样的:
第一个
我如何将每5 $d行分组,然后将其插入MySQL表中,使其看起来像

Date    Name    Amount    Status    Dept

我尝试使用if(% d行% 5 == 0)

baubqpgj

baubqpgj1#

使用array_chunk()怎么样?就像这样:

$data = ['23 Jan 2022',
         'john smith',
         '1200',
         'active',
         'ss dept',
         '24 Jan 2022',
         'Adam john',
         '2300',
         'active',
         'ss dept',
         '26 Jan 2022',
         'Sara Luke',
         '1700',
         'active',
         'bb dept'];

foreach (array_chunk($data, 5) as $person) {
    echo "Date: " . $person[0] . PHP_EOL;
    echo "Name: " . $person[1] . PHP_EOL; 
    echo "Amount: " . $person[2] . PHP_EOL; 
    echo "Status: " . $person[3] . PHP_EOL; 
    echo "Dept: " . $person[4] . PHP_EOL . PHP_EOL;
}

请参阅:https://3v4l.org/RQkmc
输出为:

Date: 23 Jan 2022
Name: john smith
Amount: 1200
Status: active
Dept: ss dept

Date: 24 Jan 2022
Name: Adam john
Amount: 2300
Status: active
Dept: ss dept

Date: 26 Jan 2022
Name: Sara Luke
Amount: 1700
Status: active
Dept: bb dept

现在,您需要做的就是将它们插入数据库中。

wz3gfoph

wz3gfoph2#

使用php array_slice可以帮助您实现这一点

$limit = 5;

$counter = 0;
$limit_counter = 0;

foreach ($data as $datum){
    if($counter % $limit === 0) {
        $every_five_lines = array_slice($data, $limit_counter, 
 $limit);
        $limit_counter += $limit;
    }
    ++$counter;
}

我没有测试代码

bqujaahr

bqujaahr3#

正如Kiko所提到的,array_chunk是一个很好的解决方案,但是如果你想知道没有array_cunk是否可以达到同样的结果,或者你是否需要自己实现类似array_chunk的东西:

$chunks = [];
$key = 0;
for ($i = 0; $i < count($lines); $i++){

    if ($i % 5 == 0) {
        $key++;
    }

    $chunks[$key][] = $lines[$i];
}

相关问题