【发布时间】:2015-07-17 22:04:37
【问题描述】:
我需要帮助在 PHP 中将 keys 分配给 array。
我的代码是:
//First I make an array of a csv file
$file="C:\path-to-csv\file.csv";
$csv= file_get_contents($file);
$array = array_map("str_getcsv", explode("\n", $csv));
array:
//echo json_encode($array);
["0","20150717","2:57:00","1437145020","1.56084","1.56096","1.56084","1.56094","5"],
["1","20150717","2:56:00","1437144960","1.56071","1.56089","1.56071","1.56089","9"],
["2","20150717","2:55:00","1437144900","1.5607","1.5607","1.56064","1.56064","2"], //continue
根据$array 的结果,我需要将特定的key 分配给特定的列,并创建一个新的array“$newArray”。因此,结果如下所示:
//$newArray should print:
"ID" : [0, 1, 2], //I would like delete this value
"n" : [20150717, 20150717, 20150717], //I would like delete this value
"d" : [2:57:00, 2:56:00, 2:55:00], //I would like delete this value
"t" : [1437145020, 1437144960, 1437144900], //column 4
"o" : [1.56084, 1.56071, 1.5607], //column 5
"h" : [1.56096, 1.56089, 1.5607], // column 6
"l" : [1.56084, 1.56071, 1.56064], // column 7
"c" : [1.56094, 1.56089, 1.56064], //column 8
"v" : [5, 9, 2] //column 9
我曾尝试通过循环和一些函数(例如 array_fill_keys 和 array_column)来完成此操作,但我无法获得所需的结果。如果您能帮助我,我将不胜感激,$array 有 1000 多个条目,因此优化代码执行速度非常重要,而且老实说超出了我的知识范围,我在 Google 中没有看到任何东西可以帮助我完成这个.
谢谢你的时间,对不起我的语法。
【问题讨论】:
-
一种优化方法是使用循环和
fgetcsv()而不是$csv= file_get_contents($file);.... 因为您仍然需要大量内存来存储1000 个条目——相当于@987654337 @ -
看到这个问题,我猜它可能会有所帮助:stackoverflow.com/questions/797251/…
-
@buff 是的,我几个小时前看到了,但我无法将它转移到我的代码中,我会继续阅读......无论如何谢谢:)!