不太确定问题的标题应该在这里...
示例 .csv:
tennis,soccer,sports
car,plane,things
jeans,shirt,things
我的最终理想结果应该是一个如下所示的数组:
Array
(
[sports] => Array
(
[0] => tennis
[1] => soccer
)
[things] => Array
(
[0] => car
[1] => plane
[2] => jeans
[3] => shirt
)
)
这是我最近尝试实现上述结果(经过多次尝试):
<?php
$f_name = 'test.csv';
// Stores all csv data
$csv_data = array_map('str_getcsv', file($f_name));
$c = count($csv_data);
$tmp = array();
$data_for_email = array();
for ($i = 0; $i < $c; $i++) {
// Remove last element and make it a key
$le = array_pop($csv_data[$i]);
$tmp[$le] = $csv_data[$i];
$data_for_email = array_merge_recursive($data_for_email, $tmp); // MEMORY ERROR
}
print_r($data_for_email);
?>
这就是我得到的结果:
Array
(
[sports] => Array
(
[0] => tennis
[1] => soccer
[2] => tennis
[3] => soccer
[4] => tennis
[5] => soccer
)
[things] => Array
(
[0] => car
[1] => plane
[2] => jeans
[3] => shirt
)
)
如您所见,我在[sports]数组中得到了 .csv 的第 1 行的重复项。
我的要求的更详细描述:
每行有 3 个字段。
第三个字段成为key
新关联数组中的 a。
其余两个字段(第1次和第2次)成为values
该key
。
因为多行可能(并且确实)包含相同的第三个字段(而第一个和第二个字段的组合总是不同的),所以我需要将所有这些重复键的值合并为 1。
PS我之后可以解析该数组(以删除重复值),但真正的.csv文件很大并且处理它变得太慢,并且在我标记的行中收到以下错误// MEMORY ERROR
:
致命错误:允许的内存大小为 134217728 字节已用尽
我尝试增加内存限制,但如果可能的话,我更愿意避免这种情况。
萧十郎
幕布斯7119047
白衣非少年