PHP fgetcsv 二维数组
PHP fgetcsv 2 dimensional array
我看过几个类似的例子,但还是不行。
csv数据文件"data1.csv"如下:
symbol,num1,num2
QCOM,10,100
QCOM,20,200
QCOM,30,300
QCOM,40,400
CTSH,10,111
CTSH,20,222
CTSH,30,333
CTSH,40,444
AAPL,10,11
AAPL,20,22
AAPL,30,33
AAPL,40,44
--end of file ----
$inputsymbol = QCOM ; // $inputsymbol will come from html.works fine.
我想读取 csv 文件并获取与 symbol = QCOM 匹配的行。并将其转换为数组 $data1 以绘制 num1 和 num2 的折线图,如下所示。
$data1 = array (
array(10,100),
array(20,200),
array(30,300),
array(40,400)
);
注意:1. csv 数据文件中每个csv 行的末尾没有逗号。
2. 同一文件中的多个符号。所以只匹配符号的行
应该包含在 $data1.
==============
马克的解决方案解决了这个问题。现在为了加快数据访问速度(对于非常大的 csv 文件),我已经(外部)格式化了如下相同的数据。问题是如何自动提取headers然后用于data1数组?
symbol,1/1/2015,1/2/2015,1/3/2015,1/4/2015
QCOM,100,200,300,400
CTSH,11,22,33,44
AAPL,10,11,12,13
注意header中字段的数量是不固定的。 (每个月都会增加)。但数据也会相应增加。
不复杂:
$inputsymbol = 'QCOM';
$data1 = [];
$fh = fopen("data1.csv", "r"));
while (($data = fgetcsv($fh, 1024)) !== FALSE) {
if ($data[0] == $inputsymbol) {
unset($data[0]);
$data1[] = $data;
}
}
fclose($fh);
那么您到底是哪里出了问题?
我看过几个类似的例子,但还是不行。 csv数据文件"data1.csv"如下:
symbol,num1,num2
QCOM,10,100
QCOM,20,200
QCOM,30,300
QCOM,40,400
CTSH,10,111
CTSH,20,222
CTSH,30,333
CTSH,40,444
AAPL,10,11
AAPL,20,22
AAPL,30,33
AAPL,40,44
--end of file ----
$inputsymbol = QCOM ; // $inputsymbol will come from html.works fine.
我想读取 csv 文件并获取与 symbol = QCOM 匹配的行。并将其转换为数组 $data1 以绘制 num1 和 num2 的折线图,如下所示。
$data1 = array (
array(10,100),
array(20,200),
array(30,300),
array(40,400)
);
注意:1. csv 数据文件中每个csv 行的末尾没有逗号。
2. 同一文件中的多个符号。所以只匹配符号的行
应该包含在 $data1.
==============
马克的解决方案解决了这个问题。现在为了加快数据访问速度(对于非常大的 csv 文件),我已经(外部)格式化了如下相同的数据。问题是如何自动提取headers然后用于data1数组?
symbol,1/1/2015,1/2/2015,1/3/2015,1/4/2015
QCOM,100,200,300,400
CTSH,11,22,33,44
AAPL,10,11,12,13
注意header中字段的数量是不固定的。 (每个月都会增加)。但数据也会相应增加。
不复杂:
$inputsymbol = 'QCOM';
$data1 = [];
$fh = fopen("data1.csv", "r"));
while (($data = fgetcsv($fh, 1024)) !== FALSE) {
if ($data[0] == $inputsymbol) {
unset($data[0]);
$data1[] = $data;
}
}
fclose($fh);
那么您到底是哪里出了问题?