0

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"}
....
];

約10万行あります。各配列要素から各値を取得する必要があります。

たとえば、「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>";
4

1 に答える 1

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"}'. 好きなように変更できます

于 2013-03-29T19:04:01.627 に答える