arjuninfo Ответов: 0

Считывайте CSV построчно и создавайте индивидуальный массив с ограничением


У меня был такой csv-файл

Изображение

Теперь я хочу прочитать csv построчно, используя лимит. Вместо того чтобы читать полный csv и создавать целый массив, скрипт будет читать csv строка за строкой и создавать определенный массив на основе лимита. Например, если я установлю предел равным 4. Он прочитает первые 4 строки и создаст индивидуальный массив.

Проблема в том, что в настоящее время он создавал полный массив вместо отдельного массива. Мне нужен ожидаемый результат вот так

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
   )

                )

        )

)


Что я уже пробовал:

<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);
    } 

0 Ответов