逐行读取CSV并创建具有限制的单个数组 [英] Read CSV line by line and create individual array with limit
本文介绍了逐行读取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屋!
查看全文