我正在尝试从CSV文件处理大型(150MB +)JavaScript数组。
这是数组的样子:
var results = [
{"requestId":"1","responseId":"1","time":"11","opacity":"0.6"}
,
{"requestId":"1","responseId":"2","time":"12","opacity":"0.7"}
,
{"requestId":"1","responseId":"3","time":"13","opacity":"0.8"}
,
{"requestId":"1","responseId":"4","time":"14","opacity":"0.9"}
,
{"requestId":"1","responseId":"5","time":"15","opacity":"0.1"}
....
];
大约有100,000行。我需要从每个数组元素中获取每个值。
例如,我需要分别从“requestId”,“responseId”,“time”和“opacity”中取1,1,11和0.6。
我曾尝试使用* file_get_contents *(失败,无法读取文件,它太大了)和文件流,还要读取以下代码,但我不知道如何提取数字使用PHP。非常感谢你的帮助。无论如何我可以将其转换为PHP数组或JSON吗?我喜欢尽快处理这些数字......
$fh = fopen($cachedFile, 'r');
$Data = fread($fh, filesize($cachedFile));
fclose($fh);
echo "<pre>";
echo $Data;
echo "</pre>";
答案 0 :(得分:2)
失败,无法读取文件,实在是太大了
这是PHP配置文件限制的问题。您可以在 php.ini 中将其更改为:
memory_limit = 200M
或者将以下内容添加到PHP脚本中:
ini_set('memory_limit', '200M');
我不知道如何使用PHP提取数字
为了获得价值,您可以使用以下内容:
$fh = fopen('a.txt', 'r');
$Data = fscanf($fh, '{"requestId":"%d","responseId":"%d","time":"%d","opacity":"%f"}');
print_r($Data);
这将输出如下内容:
Array
(
[0] => 1
[1] => 1
[2] => 11
[3] => 0.6
)
请注意,在上面的代码中,我假设您的文件有多行'{"requestId":"%d","responseId":"%d","time":"%d","opacity":"%f"}'
。您可以将其更改为您想要的任何内容