逐行读取CSV并创建具有限制的单个数组 [英] Read CSV line by line and create individual array with limit

查看:80
本文介绍了逐行读取CSV并创建具有限制的单个数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的csv



图片



现在我想使用限制读取csv Line By Line。该脚本将逐行读取csv,并根据限制创建特定的数组,而不是读取完整的csv并创建整个数组。例如,如果我将限制设置为4.它将读取前4行并创建一个单独的数组。



问题是当前它正在创建一个完整的数组而不是单个数组。我需要这样的预期输出



I had a csv like this

Image

Now I want to read the csv Line By Line using the Limit. Instead of reading the complete csv and create a whole array, The script will read the csv line by line and create a specific array based on the limit. For example, If I set the limit as 4. It will read the first 4 lines and create an individual array.

The problem is currently It was creating a complete array instead of individual array. I need the expected output like this

Array
(
    [Location 1] => Array
        (
            [48-9] => Array
                (
                    [1] => Array
                        (
                            [0] => SKU1, SKU2,SKU4,SKU5(The duplicate SKU 1 needs to be removed)
   )

                )

        )

)

Array
(
    [Location 1] => Array
        (
            [48-9] => Array
                (
                    [1] => Array
                        (
                            [0] => SKU6
   )

                )

        )

)

Array
(
    [Location 2] => Array
        (
            [48-9] => Array
                (
                    [2] => Array
                        (
                            [0] => SKU1
   )

                )

        )

)


Array
(
    [Location 3] => Array
        (
            [48-9] => Array
                (
                    [3] => Array
                        (
                            [0] => SKU1
   )

                )

        )

)





Array
(
    [Location 3] => Array
        (
            [48-1] => Array
                (
                    [1] => Array
                        (
                            [0] => SKU1,SKU2,SKU3
   )

                )

        )

)


Array
(
    [Location 1] => Array
        (
            [48-9] => Array
                (
                    [1] => Array
                        (
                            [0] => SKU10, SKU11
   )

                )

        )

)





我尝试过:





What I have tried:

<pre>    $file = '/var/www/html/test.csv';
    $arr = array();
    $i = 1;
    $array = array();
    $x = 0;
    $limit =4;
    $newArray = array();
    $oldKey = '';
    if (($handle = fopen($path, "r")) !== false)
    {
        fgetcsv($handle);
        while (($data = fgetcsv($handle, 1000, ",")) !== false)
        {
            if ($oldKey != $data[0] . $data[1] . $data[2])
            {
                $oldKey = $data[0] . $data[1] . $data[2];
                $x = 0;
                $i = 1;
            }
            $array[$data[0]][$data[1]][$data[2]][$x][] = $data[3];

            if ($i++ == $limit)
            {
                $x++;
                $i = 1;
            }
        }
        foreach ($array as $akey => $a)
        {
            foreach ($a as $bkey => $b)
            {
                foreach ($b as $ckey => $c)
                {
                    foreach ($c as $key => $d)
                    {
                        $newArray[$akey][$akey][$bkey][$ckey][$key] = implode(',', $d);
                    }
                }
            }
        }
        fclose($handle);
        $this->processCsv($newArray);
    } 

推荐答案

file ='/ var / www / html / test.csv';
file = '/var/www/html/test.csv';


arr = array();
arr = array();


i = 1;


这篇关于逐行读取CSV并创建具有限制的单个数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆